Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Groovy] RegEx를 사용할 때 미묘한 차이 Computer & Program

문자열 매칭을 해보자.. 엄훠~ 종류가 많고나.. 우선 하나씩 살펴보면..
Groovy에서 정규식은 문자열 앞에 tilde(~, 물결)를 사용한다. ~'pattern'처럼 사용하면 되는데 띄워쓰기를 잘못 쓰거나 하면 원치 않은 결과가 나올 수 있으니 조심해야 한다. 그리고 여기서는 문자열을 생성하는데 single quote(', 따옴표)만 사용했는데, groovy는 문자열을 여러 방법으로 생성할 수 있으니 모두 써보자.

1. ~'패턴'은 Pattern 객체를 생성한다.
def pattern = ~'foo'
assert pattern instanceof java.util.regex.Pattern
assert pattern.matcher('foo').matches()


2. =~는 Matcher 객체를 생성한다.
def matcher = 'foobar' =~ 'foo'
assert matcher instanceof java.util.regex.Matcher
assert !matcher.matches()


3. =~는 Matcher 객체를 생성하기도 하지만, boolean 판별식으로 사용되는 경우는 일부라도 매치되면 true를 반환한다.
assert 'foobar' =~ 'foo'
boolean b = 'foobar' =~ 'bar'
assert b


4. ==~는 테스트까지 한다. Matcher.matches()라고 봐도 될듯..
assert 'foobar' ==~ 'foo.*'
def tests = 'foo' ==~ 'foo'
assert tests instanceof Boolean


- 참고
Regular Expressions
Documenting Regular Expressions in Groovy

덧글

댓글 입력 영역

Google AdSense (text/image)