자바 - 0007 - 정규 표현 식

4238 단어
2016.7.15
slipt (String regex) 과 replaceAll (String regex, String replacement)
위 는 문자열 을 맞 출 때 자주 사용 하 는 두 가지 방법 입 니 다. 일치 하 는 매개 변수 문자열 은 모두 정규 표현 식 문자열 입 니 다. regex 는 정규 표현 식 입 니 다.
문자열 을 처리 할 때 정규 표현 식 을 유연 하고 능숙 하 게 사용 할 수 있다 면 프로그램 에 대해 논리 적 판단, 복잡 한 처 리 를 많이 쓰 지 않 고 오류 와 일치 하지 않 는 논 리 를 쉽게 표현 할 수 있 습 니 다.
정규 표현 식 의 일부 문 자 는 특수 한 의 미 를 부여 하고 있 으 며, 일치 하려 면 전의 문 자 를 사용 해 야 합 니 다.
예 를 들 어 + 플러스 를 매 칭 하려 면 \ + 를 사용 해 야 하지만 우 리 는 이 정규 표현 식 을 문자열 로 입력 해 야 합 니 다. 문자열 에 \ \ 도 전의 문자 이기 때문에 우 리 는 \ \ 를 사용 하여 \, 즉 일치 + 플러스 를 표시 해 야 합 니 다. 우 리 는 \ \ \ + 를 사용 해 야 합 니 다.
  //    
  String str = "abc+xyz";
  str=str.replaceAll("+", "-");
  System.out.println(str);
  //       
  Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
  //    
  String str = "abc+xyz";
  str=str.replaceAll("\\+", "-");
  System.out.println(str);
  //     
  abc-xyz

예 를 들 어 문자열 'This is good.' 의 'is' 단 어 를' is not '로 바 꾸 려 면' is' 와 직접 일치 할 수 없습니다.일반적인 논리 로 쓰 려 면 먼저 'is' 단어 가 존재 하 는 지 확인 해 야 합 니 다. 앞 뒤 가 모두 비 자모 이거 나 문자 가 없 는 지 고려 해 야 합 니 다.그 다음 에 모든 'is' 를 같이 바 꾸 는 것 이 좋 습 니 다. 그러나 같이 바 꾸 기 가 어 려 울 것 입 니 다. 순서대로 바 꾸 려 면 모든' is' 단어의 색인 이 필요 합 니 다. 한 번 바 꾸 면 문자열 의 길이 가 바 뀌 고 색인 도 상응 하 게 증가 해 야 합 니 다.바 꾼 후 새 문자열 을 되 돌려 줍 니 다.
이러 면 귀 찮 지 않 아 요? 머리 가 좀 혼 란 스 러 워 요.우리 가 정규 표현 식 을 사용 하면 매우 다 르 고 훨씬 가 벼 워 질 것 이다.
  return str.replaceAll("\\bis\\b", "is not");

\ b 는 한 단어의 경 계 를 대표 합 니 다. 우 리 는 그것들 을 조합 합 니 다. \ bis \ b 는 is 단어 입 니 다. 문자열 로 입력 하 는 줄 알 았 습 니 다. 모든 것 을 전의 에서 \ 한 번, regex 는 '\ bis \ \ \ b' 입 니 다. 논리 가 뚜렷 하고 방법 이 간단 한 지 보 세 요.물론 전 제 는 조합 이 조건 에 맞 는 정규 표현 식 을 조합 할 수 있다 는 것 이다.
자주 사용 하 는 전의 문자 들
전의 문자
의의
\+
플러스
\.
점.
\?
물음표
\*
별표
\\
백 슬 래 쉬
\( \)
괄호
\[ \]
네모 난 괄호
\{ \}
대괄호
세로 줄
\$
달러
\^
제곱
\t
간격 ('\ u0009')
줄 바 꾸 기 ('\ u000A')
\r
리 턴 ('\ \ u000D')
\d
숫자 등가 [0 - 9]
\D
비 숫자 등가 [^ 0 - 9]
\s
공백 기호 [\ t \ x0B \ f \ r]
\S
비 공백 기호 [^ \ t \ x0B \ f \ r]
\w
단독 문자 [a - zA - Z 0 - 9]
\W
비 단독 문자 [^ a - zA - Z 0 - 9]
\f
페이지 바 꾸 기 부호
\e
Escape
\b
한 단어의 경계
\B
단어 가 아 닌 경계
\G
이전 일치 하 는 끝
^ 제한 시작
^ 자바 조건 은 자바 로 시작 하 는 문자 로 제 한 됩 니 다.
$끝 제한
java $조건 은 자바 를 끝 문자 로 제한 합 니 다.
... 제 외 를 위 한 임의의 단독 문자
java.. 조건 은 자바 로 제 한 된 후 줄 을 바 꾸 는 것 을 제외 하고 두 글자 로 제 한 됩 니 다.
특정 제한 조건 추가 []
[a - z] 조건 은 소문 자 a to z 범위 에서 한 글자 로 제한 합 니 다. [A - Z] 조건 은 대문자 A to Z 범위 에서 한 글자 로 제한 합 니 다. [a - zA - Z] 조건 은 소문 자 a to z 또는 대문자 A to Z 범위 에서 한 글자 로 제한 합 니 다. [0 - 9] 조건 은 소문 자 0 to 9 범위 에서 한 글자 [0 - 9a - z] 조건 은 (소문 자 0 to 9 또는 a to z) 로 제한 합 니 다.범위 의 한 문자 [0 - 9 [a - z] 조건 은 (소문 자 0 to 9) 또는 (소문 자 a to z) 범위 의 한 문자 (교 집합) 로 제 한 됩 니 다.
[] 에 ^ 를 추가 한 후 다시 제한 조건 을 추가 합 니 다 [^]
[^ a - z] 조건 은 비 소문 자 a to z 범위 에서 한 글자 로 제한 합 니 다 [^ A - Z] 조건 은 비 소문 자 A to Z 범위 에서 한 글자 로 제한 합 니 다 [^ a - zA - Z] 조건 은 비 소문 자 a to z 또는 대문자 A to Z 범위 에서 한 글자 로 제한 합 니 다 [^ 0 - 9] 조건 은 비 소문 자 0 to 9 범위 에서 한 글자 로 제한 합 니 다 [^ 0 - 9a - z] 조건 은 비 소문 자 0 to 9 범위 에서 한 글자 로 제한 합 니 다.(소문 자 0 to 9 또는 a to z) 범위 의 한 글자 [^ 0 - 9 [a - z]] 조건 은 (소문 자 0 to 9 가 아 닌) 또는 (소문 자 a to z) 범위 의 한 글자 (교 집합) 로 제 한 됩 니 다.
특정 문자 가 0 회 이상 나타 날 때 '*' 를 사용 할 수 있 습 니 다.
J * 0 개 이상 J. * 0 개 이상 임 의 문자 J. * D J 와 D 사이 에 0 개 이상 임 의 문자
특정 문자 가 1 회 이상 나타 날 때 '+' 를 사용 할 수 있 습 니 다.
J + 1 개 이상 J. + 1 개 이상 임 의 문자 J. + D J 와 D 사이 1 개 이상 임 의 문자
제한 조건 이 특정 문자 가 0 번 또는 1 번 이상 나타 날 때 '?' 를 사용 할 수 있 습 니 다.
JA? J 나 JA 가 나 와 요.
지정 한 횟수 문자 '{a}' 연속 출현 으로 제한
J{2}  JJ J{3}  JJJ
문자 연속 a 개 이상 '{a,}'
J {3,} JJJ, JJJ, JJJJ,?? (3 회 이상 J 병존)
문자 연속 a 개 이상, b 및 개 이하 '{a, b}'
J {3, 5} JJJ 또는 JJJ 또는 JJJJJ
둘 중 하 나 를 취하 다.
J | A J 또는 A Java | Hello Java 또는 Hello
학습 문장: 자바 의 split 사용 에 관 한 학습 문장: 자바 는 전의 가 필요 한 특수 기호 들 이 있 습 니 다.

좋은 웹페이지 즐겨찾기