Regular Expression ( regexp ) 에 대해 알아보자. |
이미지 출처 : www.w3programmers.com
Regular Expression 이 뭐야?
String 에 대한 검색 패턴을 정의한 것을 Regular Expression ( 정규식 ) 이라 부른다.
Regular Expression 은 보통 축약형으로 Regexp 라고 부른다.
Regexp 는 string 의 일부분을 찾고, 수정하는 등의 작업을 하는 데 쓰인다.
Regexp 는 String의 왼쪽에서 오른쪽으로 적용되며, 한번 match 된 string 의 일부는 그 다음 검색에서 제외된다.
Java, Perl, Groovy 등 대부분의 언어에서 지원되지만,
그 문법과 사용 형태 등은 언어마다 조금씩 다르다.
일반적인 사용 기호
. : 어떤 문자든 match
^regexp : line 의 첫줄이어야만 match
regexp$ : line 의 마지막이어야만 match
[abc] : a or b or c 중 하나가 match
[abc][vz] : 첫글자가 a or b or c 에 match 되고, 두번째 글자가 v or z 에 match
[^abc] : a 나 b 나 c 가 아닌 character 에 match
[a-d1-7] : a~d 또는 1~7 가 매치.
X|Z : X 혹은 Z 에 match
XZ : XZ 에 match
$ : line end 에 match
Metacharaters
\d : 어떤 숫자든 match. [0-9] 로도 쓰일 수 있다.
\D : 어떤 숫자가 아닌 char 에 match [^0-9] 로도 쓰일 수 있다.
\s : white space 에 match.
\S : white space 가 아닌 것에 match.
\w : word char 에 match. [a-zA-Z_0-9] 로 쓰일 수 있다.
\W : non-word char 에 match.
\b : word boundary 에 match. but 검색결과 char 로는 포함시키지 않는다.
Quantifier
* : 0 혹은 그 이상 발생
+ : 1 혹은 그 이상 발생
? : 0 혹은 1 번 발생
{X} : X번 발생
{X,Y} : X~Y번 사이 발생
*? : quantifier 다음의 ? 는 smallest match 를 찾아냄.
Group
() 를 통해서 Group 으로 묶을 수 있다.
$1, $2 등을 통해 Group 에 접근할 수 있다.
부정 match
(?!pattern) 은 pattern 이 발생하지 않는 경우를 말한다.
예를 들면 c(?!d) 는 c 뒤에 d 가 오지 않는 경우에 match 한다.
regexp 관련 함수들
string.matches( "regex" ) : match 여부를 true/false 로 return
string.split( "regex" ) : regex 기준으로 match 하여 쪼갠 substring array 를 만든다.
string.replace( "regex", "replacement" ) : regex 에 match 되는 녀석들을 replacement 로 바꾼다.
Pattern pattern = Pattern.compile ( "regex" );
Matcher matcher = pattern.matcher( string );
matcher.start()
matcher.end()
matcher.group()
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Spring] Spring Framework 의 개요 #3 (0) | 2013.06.27 |
---|---|
JIT 컴파일러(Compiler)에 대해 알아본다. (4) | 2013.06.27 |
[Spring] Spring Framework 의 개요 #2 (0) | 2013.06.25 |
x86 안드로이드에 대해 알아보자. (0) | 2013.06.25 |
[android] Launcher( HomeScreen ) 에 shortcut( 바로가기 ) 생성하기 (0) | 2013.06.24 |
댓글