okjsp 에 올라온 정규식 문제를 가지고 좀 고민해보았다.
Q :
sdklfsdjf abc1c 2 3 s dadqqq sdlkfjslkjdfslkdjflk abcs f l ks jdfkjqqq sflksjdfk abcsd f sdfqqq sdfsf
이런 문자열이 있을 때
abc로 시작하면서 qqq로 끝나는 문자열들을 배열로 받고 싶어요
제가 원하는건
[0] abc1c 2 3 s dadqqq
[1] abcs f l ks jdfkjqqq
[2] abcsd f sdfqqq
이렇게 결과가 나와야 하는데
문제는 abc1c 2 3 s dadqqq sdlkfjslkjdfslkdjflk abcs f l ks jdfkjqqq sflksjdfk abcsd f sdfqqq
이렇게 나온다는거… -_-
A :
‘*’ or ‘+’ 같은 quantifier 는 패턴과 일치하는한 최대한 많은 문자를 취합니다( 영어로는 ‘greedy : 탐욕스러운, 게걸스러운’ 하다라고 표현하더군요 ) 그러므로 이 때는 ‘?’ 를 이용하여 non-greedy 하게 할 수 있습니다.( 여기 깔끔하게 정리되어 있네요. http://exampledepot.com/egs/java.util.regex/Greedy.html )
Pattern p = Pattern.compile(”abc.*?qqq”);
Q :
정규식으로 img src=이미지경로만 가져오는것 질문드립니다.
A :
검색해서 찾은 PHP 용으로 작성된 패턴을 Java 용으로 살짝 바꿔봤습니다.
Pattern p = Pattern.compile(”(?i)]*[src] *= *[\"\']{0,1}([^\"\'\\ >]*)”);
Matcher m = p.matcher(str);while(m.find()) {
System.out.println(m.group(1));
}
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment