본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[java/tutorial] regexp 에 대해 알아보자.

by 돼지왕 왕돼지 2013. 6. 26.
반응형

 Regular Expression ( regexp ) 에 대해 알아보자.

 


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()




반응형

댓글