2011-08-14 8 views
2

문자열의 단어와 선택적으로 일치하는 정규식은 어떻게 만들 수 있습니까? 예를 들어, 내가 문장 일치하는 정규식을 가정 해 봅시다 :정규식 - 선택적으로 단어 일치

I like vanilla ice cream. 

을하지만 같은 정규식도 내가 그것을 어떻게

I like ice cream. 

일치하도록 "바닐라"단어는 선택 사양 일 것을 원하는 ? 나 바닐라를 사용 했어? 그러나 그것은 작동하지 않는 것 같습니다.

String s1 = "I like vanilla icecream"; 
String s2 = "I like icecream"; 
Pattern p = Pattern.compile("I like (vanilla)?icecream"); 
System.out.println(p.matcher(s1).matches()); // true 
System.out.println(p.matcher(s2).matches()); // true 
+0

당신이 시도하고 정확한 정규식을 게시 할 수 작동합니까? –

답변

3

뿐만 아니라 단어 vanilla 선택해야 할뿐만 아니라, 다음과 공백, 즉, (vanilla)?을한다 "바닐라"이후의 공간. 하지만,

I like [vanilla]? ice cream 

가 작동하지 않습니다 :

1

이이

I like (vanilla)?ice cream 

당신은 아마 여분의 것을 잊어보십시오 :

0

자바 regex tester를 사용하십니까? 0과 1

I like [vanilla]* ice cream 

+0

"바닐라"의 일부인 0 개 이상의 문자와 양쪽에 한 개의 공백이 일치합니다. "나는 alinnaaaaavavva 아이스크림이 좋아"하지만 "아이스크림을 좋아합니다"는 일치하지 않습니다. –

+0

아니요 ... (대답에 대한 설명이 아니라 @Michael Hays의 의견입니다.) –