헤더 인 키워드를 확인하고 입력이 완전히 제어 할 수 없습니다.정규식에서 FOO 또는 BAR 또는 Foo 또는 Bar를 테스트하는 가장 좋은 방법은 무엇입니까?
그래서 첫 번째 문자는 대문자로 표시 될 것이지만 모든 대문자로 표시 될 것임을 알았습니다.
내가는 자바 패턴 수행 할 수
Pattern test = Pattern.compile("\\b(FOO|BAR|Foo|Bar)\\b");
을 그리고 그와 패턴 매처을하는 것은 잘 작동합니다. 내가 확인하는 6 개 또는 8 키워드가있는 경우
boolean ans = test.matcher(sometext).find();
그러나이 두 번 가지 추한이 모든 키워드를 가지고 갈 수있는 시작을 위해 : 마찬가지로.
누구나이 일을 할 수있는 좀 더 우아한 정규식을 생각해 낼 수 있습니까?
감사
나를 그냥 처음이었다 무엇을 제안이다, 완전히 케이스를 무시로, 그 간단하지를 다시 강조하자
3/26/15을 추가했습니다. 첫 번째 문자는 대문자로 입력해야하며 나머지 문자열은 위 또는 아래 일 수 있습니다.
대부분의 정규식 엔진은 'IGNORECASE'에 대한 'I'옵션이 있습니다 - 나는 자바가 너무 않습니다 내기,하지만 난 그것을 정확하게 어떻게 될지 모른다. 너무 일치 (예 : fOo)하지만 문제입니까? [편집 : 어쩌면 'Pattern test = Pattern.compile ("\\ b (foo | bar) \\ b", Pattern.CASE_INSENSITIVE);]] – TessellatingHeckler
일단 패턴을 컴파일하면 실제로는 문제가되지 않습니다. 생성 된 상태 머신을 통과하는 많은 통과 경로 (수백만을 말하는 것이 아니라면 메모리가 부족할 수 있음). 편의상, 코드 목록을 프로그래밍 방식으로 생성하는 것이 좋습니다. 복잡한 정규 표현식에서 오타를 디버깅하는 것이 쉽지 않기 때문에 코드를 쉽게 유지 관리 할 수 있기 때문입니다. – tripleee