기본 표현
- . 줄바꿈 문자를 제외한 임의의 문자 하나를 대체
- \ 이스케이프 문자
- [] 집합
- [\b] 역스페이스
- \f 페이지 넘김(form feed) 문자
- \n 줄바꿈(line feed) 문자
- \r 캐리지 리턴
- \t 탭
- \v 수직 탭
- \d 숫자 하나([0-9])와 동일
- \D 숫자를 제외한 문자([^0-9])와 동일
- \w 대소문자와 밑줄을 포함하는 모든 영숫자(=[a-zA-Z0-9_])
- \W 영숫자나, 밑줄이 아닌 모든 문자(=[^a-zA-Z0-9_])
- \s 모든 공백 문자(=[\f\n\r\t\v])
- \S 공백 문자가 아닌 모든 문자(=[^\f\n\r\t\v])
- * 0-n번 반복 (greedy)
- ? 0-1번 (greedy)
- + 1-n번 반복 (greedy)
- *? 0-n번 반복 (lazy)
- +? 1-n번 반복 (lazy)
- {숫자} 숫자 만큼 반복
- {숫자1, 숫자2} 최소 숫자1번 반복하고 숫자2번까지 반복
- {숫자,} 최소 숫자만큼 반복 (greedy)
- {숫자,}? 최소 숫자만큼 반복 (lazy)
- () 하위 표현식
- | OR
- \숫자 역참조, 숫자는 하위 표현식의 인덱스, 0은 전체.
- $숫자 치환시의 역참조
- \E \L혹은 \U 변환의 끝을 나타냄
- \l 다음에 오는 글자를 소문자로 치환
- \L \E를 만날 때까지 모든 문자를 소문자로 치환
- \u 다음에 오는 글자를 대문자로 치환
- \U \E를 만날 때까지 모든 문자를 대문자로 치환
위치 찾기
- \b 단어 경계 지정
- ^표현 문자열 시작 문자 지정
- $표현 문자열 끝 문자 지정
- (?m) 줄바꿈문자를 공백문자에 포함되도록 한다.
POSIX
- [:alnum:] 모든 영숫자([a-zA-Z0-9)
- [:alpha:] 모든 영문자([a-zA-Z])
- [:blank:] 빈칸이나 탭 문자와 같음
- [:cntrl:] 아스키 제어문자(아스키 0-31, 127)
- [:digit:] 모든 한 자리 숫자([0-9])
- [:graph:] [:print:]와 동일하나 빈칸(space)은 제외
- [:lower:] 모든 소문자([a-z])
- [:print:] 출력가능한 모든 문자
- [:punct:] [:alnum:]이나 [:cntrl:]가 포함되지 않은 모든 문자
- [:space:] 빈칸을 포함한 모든 공백 문자([\f\n\r\t\v])
- [:upper:] 모든 대문자([A-Z])
- [:xdigit:] 모든 16진수 숫자([a-fA-F0-9])
전방탐색과 후방탐색
- (?=) 긍정형 전방 탐색
- (?!) 부정형 전방 탐색
- (?<=) 긍정형 후방 탐색
- (?<!) 부정형 후방 탐색
조건 사용하기
- (?(backreference)true) 역참조가 있을 때 true를 함께 일치시킴
- (?(backreference)true|false) 역참조가 있을 때 true를 아니면 false를 일치시킴
- (?(?=식)true|false) 전방탐색을 이용한 조건
- (?(?<=식)true|false) 후방탐색을 이용한 조건
자바에서 정규표현식 사용
※ JRE 1.4부터 정규표현식을 지원하므로 유의하여 사용한다.
※ 조건은 지원하지 않음
※ \E, \l, \L, \u, \U를 이용한 대소문자 변환은 지원하지 않음
※ \b를 이용한 백스페이스 일치를 지원하지 않음
※ \z는 지원하지 않음
java.util.regex.Matcher 클래스
- find() - 문자열에서 패턴과 일치하는 부분이 있는지 찾는다.
- lookingAt() - 문자열이 주어진 패턴으로 시작하는지 일치시켜 본다.
- matches() - 문자열 전체를 주어진 패턴과 일치시켜본다.
- replaceAll() - 일치하는 부분을 모두 치환한다.
- replaceFirst() - 처음 일치하는 부분만 치환한다.
- group() - 하위 표현식을 반환한다.
java.util.regex.Pattern 클래스
- compile() - 정규 표현식을 패턴으로 컴파일한다.
- flag() - 패턴에 설정되어 있는 일치 플래그를 반환한다.
- matches() - Matcher 클래스의 matches와 동일함
- pattern() - 만들었던 패턴에서 정규 표현식 부분을 문자열로 반환한다.
- split() - 문자열을 하위 문자열로 나눈다.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest{ public static void main(String[] args){ Pattern pattern = Pattern.compile("정규표현식"); Matcher matcher = pattern.matcher("대상 문자열"); if(matcher.find()){ // 처리 } } }
'밤을 지새다' 카테고리의 다른 글
Linux Kernel Map (0) | 2013.03.24 |
---|---|
C# ListBox Double Click 이벤트 (0) | 2012.06.08 |
네이트온 광고와 팝업 없애기 (3) | 2012.05.16 |
파일의 확장자를 보는 방법 (0) | 2012.05.16 |
Gmail 실행파일 첨부 문제 (0) | 2012.05.16 |