2012-05-07 4 views
0

아래 내 코드의 관련 조각을 찾아주세요 포함 된 경우 : "델타 문자열이 바로 그리스 문자열"감마 "(같은 경우확인 문자열은 그리스 문자열

public static final String GREEK = "(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)"; 

public static int setHasGreek(String str) { 
    if (str.toLowerCase().matches(".*\\b"+GREEK+"\\b.*")) return 1; 
    return 0; 
} 

기능은 잘 작동, 또는 "등), 내 문자열이"NFkappaB "이면 작동하지 않습니다. 누군가 정규 표현식을 수정하여 조언을 제공 할 수 있습니까?

감사합니다.

+4

[단어 경계 \ b']를 사용하고 있습니다 (http://www.regular-expressions.info/wordboundaries.html). 'NFkappaB'와 같은 것을 잡으려면 그 제한을 제거해야합니다. – Joe

+0

'GREEK'가'String []'인'for (int i = 0; i Sheriff

+0

@Joe 의견 대신 대답을 제출해야합니다. – user845279

답변

1

word boundaries \b을 사용하고 있습니다. NFkappaB과 같은 것을 캡처하려면 해당 제한을 제거해야합니다.

if (str.toLowerCase().matches(".*"+GREEK+".*")) return 1; 

지금 이것은 분명히 당신이 복잡한 정규식하지 않고 할 수있는 거의 없다 (예 : 2 개 문자로 시작하고 1로 끝나는대로) NFkappaB처럼 캡처 물건을 캡처에 대한 특정 규칙이 그렇게하지 않는 alphagammakappa처럼 아무것도 캡처 이를 피하려면 lookarounds이 필요합니다.