2012-07-11 2 views
1

일부 줄에서 전체 단어를 일치 시키려고합니다. 정규 표현식에서 OR을 사용하는 방법을 알고 싶습니다. 키워드 하나만 사용하면 올바르게 작동합니다.정규식이 전체 단어 OR 연산자와 일치합니다.

원래
String regex = ".*\\b(KEYWORD1|KEYWORD2|KEYWORD3)\\b.*"; 

, 당신의 정규식은 다음과 같이 평가 받고 : 예,

regex = ".*\\b" + "KEYWORD1" + "\\b.*"; 


String regex = ".*\\b" + "KEYWORD1|KEYWORD2|KEYWORD3" + "\\b.*"; 

    for (int i = start; i < end; i++) {   
     if (lines[i].matches(regex)) { 
      System.out.println("Matches"); 
     } 
    } 

답변

6

당신이 원하는

.*\bKEYWORD1 
| 
KEYWORD2 
| 
KEYWORD3\b.* 

그러나 당신이 원하는 :

.*\b 
(
    KEYWORD1 
    | 
    KEYWORD2 
    | 
    KEYWORD3 
) 
\b.* 

이 멋진 tool r을 분석하는 데 도움이 될 수 있습니다. egexes와 같은 버그를 찾으십시오.

+0

번개 응답입니다. 내가 확인해 볼게, 고마워. – FirmView

2

파이프 문자 |은 OR 연산자로 사용할 수 있습니다.이 연산자는 정규식에서 대체라고합니다.

것은 이것이 당신의 예에서 제대로 작동하도록하기 위해, 당신은 예를 들어, 단지 당신이 관심있는 키워드는 논리합을하고 있는지 확인하기 위해 교대 주위에 그룹을 만들어야합니다

String regex = ".*\\b(KEYWORD1|KEYWORD2|KEYWORD3)\\b.*"; 

현재 가지고있는 것은 .*\\bKEYWORD1 OR KEYWORD2 OR KEYWORD3\\b.*입니다.

관련 문제