Pattern 클래스 와 Matcher 클래스 에 대한 자세 한 설명
5870 단어 자바 정규 표현 식
Java :
Pattern p=Pattern.compile("\\w+");
p.pattern();// \w+
pattern()은 정규 표현 식 의 문자열 형식 을 되 돌려 줍 니 다.사실은 Pattern.copile(String regex)의 regex 인 자 를 되 돌려 줍 니 다.
1.Pattern.split(CharSequence input) Pattern 은 문자열 을 구분 하고 String[]을 되 돌려 주 는 split(CharSequence input)방법 이 있 습 니 다.String.split(String regex)는 Pattern.split(CharSequence input)을 통 해 이 루어 진 것 이 라 고 생각 합 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
String[] str=p.split(" QQ :456456 :0532214 :[email protected]");
결과:str[0]="나의 QQ 는:"str[1]="나의 전 화 는:"str[2]="나의 메 일 은:"[email protected]"
2.Pattern.matcher(String regex,CharSequence input)는 문자열 을 빠르게 일치 시 키 는 정적 방법 입 니 다.이 방법 은 한 번 만 일치 하고 모든 문자열 과 일치 하 는 데 적합 합 니 다.
Java :
Pattern.matches("\\d+","2223");// true
Pattern.matches("\\d+","2223aa");// false, true, aa
Pattern.matches("\\d+","22bb23");// false, true, bb
3.Pattern.matcher(CharSequence input)
이렇게 많은 말 을 했 는데 드디어 Matcher 류 가 등장 할 차례 입 니 다.Pattern.matcher(CharSequence input)는 Matcher 대상 을 되 돌려 줍 니 다.
Matcher 류 의 구조 방법 도 개인 적 인 것 입 니 다.함부로 만 들 수 없고 Pattern.matcher(CharSequence input)방법 으로 만 이러한 인 스 턴 스 를 얻 을 수 있 습 니 다.
Pattern 류 는 간단 한 일치 동작 만 할 수 있 습 니 다.더 강하 고 편리 한 정규 일치 동작 을 얻 으 려 면 Pattern 을 Matcher 와 함께 합작 해 야 합 니 다.Matcher 류 는 정규 표현 식 에 대한 그룹 지원 과 정규 표현 식 에 대한 여러 번 의 일치 지원 을 제공 합 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.pattern();// p Matcher Pattern
4.Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()
Matcher 클래스 는 세 가지 일치 하 는 조작 방법 을 제공 합 니 다.세 가지 방법 은 모두 boolean 형식 으로 돌아 갑 니 다.일치 할 때 true 로 돌아 가 고 일치 하지 않 으 면 false 로 돌아 갑 니 다.
matches()는 전체 문자열 을 일치 시 킵 니 다.전체 문자열 이 일치 해 야 true 로 돌아 갑 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.matches();// false, bb \d+ , .
Matcher m2=p.matcher("2223");
m2.matches();// true, \d+
Pattern.matcher(String regex,CharSequence input)를 돌 이 켜 보 겠 습 니 다.아래 코드 와 등가 입 니 다.
Pattern.compile(regex).matcher(input).matches()
lookingAt()은 앞의 문자열 을 일치 시 킵 니 다.일치 하 는 문자열 만 맨 앞 에 있어 야 true 로 돌아 갑 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.lookingAt();// true, \d+ 22
Matcher m2=p.matcher("aa2223");
m2.lookingAt();// false, \d+ aa
find()문자열 을 일치 시 킵 니 다.일치 하 는 문자열 은 모든 위치 에 있 습 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.find();// true
Matcher m2=p.matcher("aa2223");
m2.find();// true
Matcher m3=p.matcher("aa2223bb");
m3.find();// true
Matcher m4=p.matcher("aabb");
m4.find();// false
5.Mathcer.start()/ Matcher.end()/ Matcher.group()
matches(),lookingAt(),find()를 사용 하여 일치 하 는 동작 을 수행 하면 상기 세 가지 방법 으로 더 자세 한 정 보 를 얻 을 수 있 습 니 다.
start()문자열 에 일치 하 는 하위 문자열 의 색인 위 치 를 되 돌려 줍 니 다.
end()는 일치 하 는 하위 문자열 의 마지막 문자 가 문자열 에 있 는 색인 위 치 를 되 돌려 줍 니 다.
group()일치 하 는 하위 문자열 되 돌려 주기
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.lookingAt();// true, \d+ 22
Matcher m2=p.matcher("aa2223");
m2.lookingAt();// false, \d+ aa
Mathcer m2=m.matcher("2223bb");
m.lookingAt(); // 2223
m.start(); // 0, lookingAt() , lookingAt() ,start() 0
m.end(); // 4
m.group(); // 2223
Matcher m3=m.matcher("2223bb");
m.matches(); //
m.start(); // 0,
m.end(); // 6, , matches()
m.group(); // 2223bb
이렇게 많아 start(),end(),group()은 모두 재 부팅 방법 이 있 습 니 다.start(int i),end(int i),group(int i)은 그룹 작업 에 만 사용 되 고 Mathcer 류 는 groupCount()가 몇 그룹 으로 되 돌아 가 는 지 에 사 용 됩 니 다.
Java :
Pattern p=Pattern.compile("([a-z]+)(\\d+)");
Matcher m=p.matcher("aaa2223bb");
m.find(); // aaa2223
m.groupCount(); // 2, 2
m.start(1); // 0
m.start(2); // 3
m.end(1); // 3 .
m.end(2); // 7
m.group(1); // aaa,
m.group(2); // 2223,
지금 우 리 는 약간 고 급 스 러 운 정규 일치 동작 을 사용 합 니 다.예 를 들 어 텍스트 가 있 습 니 다.안에 많은 숫자 가 있 습 니 다.그리고 이 숫자 들 은 분 리 된 것 입 니 다.우 리 는 지금 텍스트 의 모든 숫자 를 꺼 내 려 고 합 니 다.자바 의 정규 조작 을 이용 하 는 것 이 그렇게 간단 합 니 다.
Java :
Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher(" QQ :456456 :0532214 :[email protected]");
while(m.find()) {
System.out.println(m.group());
}
:
456456
0532214
123
while()
while(m.find()) {
System.out.println(m.group());
System.out.print("start:"+m.start());
System.out.println(" end:"+m.end());
}
:
456456
start:6 end:12
0532214
start:19 end:26
123
start:36 end:39
일치 하 는 동작 을 수행 할 때마다 start(),end(),group()세 가지 방법의 값 이 바 뀌 고 일치 하 는 하위 문자열 의 정보 로 바 뀌 며 재 업로드 방법 도 해당 하 는 정보 로 바 뀌 는 것 을 알 아야 합 니 다.
메모:일치 하 는 작업 이 성공 해야만 start(),end(),group()세 가지 방법 을 사용 할 수 있 습 니 다.그렇지 않 으 면 자바.lang.IllegalState Exception,즉 matches(),lookingAt(),find()중 임의의 방법 이 true 로 돌아 갈 때 만 사용 할 수 있 습 니 다.
클릭 하여 링크 열기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 정규 표현 식 (1)문자열 을 처리 하 는 프로그램 이나 웹 페이지 를 작성 할 때 복잡 한 규칙 에 맞 는 문자열 을 찾 을 필요 가 있 습 니 다.정규 표현 식 은 이 규칙 들 을 설명 하 는 도구 입 니 다.정규 표현 식 은 텍스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.