확인

2011-01-18 5 views
7

나는 문자열 DEF가 포함 된 모든 단어를 확인하려면이 올바른 방법이 될 것이다 : 즉, 정규 표현식에를 부정 수정할 때확인

^.*[D][E][F].*$ 

또한 쉬운 규칙이있다 위의 DEF를 포함하지 않는 문자열을 식별하는

편집 : 정규식이 필요하지 않습니다 알아요,하지만 내 목적을 위해 않습니다.

답변

18

이 너무 작동합니다

^.*DEF.*$ 

이 확인, 전체 문자열 적어도 한 번 문자열 "DEF"를 포함 합니다. 하지만이 같은 간단한 표현은 다음과 같습니다.

str.contains("DEF"); 

같은 기능을합니다.

+0

무엇^및 $ –

+0

@ LuisRhys, ^와'$ '는 각각 문자열의 시작과 끝을 나타냅니다. java의'String.matches (String)'을 사용하고 있다면 정규 표현식이 * 전체 * 입력 문자열과 일치하는 경우에만이 메소드가 true를 리턴하기 때문에 이들을 사용할 필요가 없습니다. – Czechnology

9

str.contains("DEF")!str.contains("DEF")을 사용하지 않는 이유는 무엇입니까?

+2

+1 : 정규식이 필요하지 않습니다. – LaGrandMere

+0

나는 어떻게 작동 하는지를 알고 싶습니다. – dr85

+0

내장 된 contains() 메서드는 문자열의 바이트를 따라 D, E 및 F의 문자가 나오는 순서대로 검색하므로 무차별 검색이라고 생각할 수 있습니다. 예 : 100 자의 문자열은 해당 시퀀스에 대해 ~ 97 회까지 "검사"됩니다. 정규 표현식은 매우 다른 동물입니다. – Brian

0

DEF을 정규 표현식으로 사용하면됩니다. 문자열을 포함하지 않는 문자열을 식별하려면 위의 표현식과 일치하지 않는 문자열을 반환하면됩니다.

+0

어떻게 특정 부분 문자열을 포함하지 않는 모든 단어를 정규 표현식으로 사용 하시겠습니까 – dr85

+0

말했다, 그냥 결과를 부정했다, 그래서'! string.matches ("DEF");' – biziclop

+0

하지만 그냥 자바 정규식을 사용하여 그냥 순수한 – dr85