2011-08-14 9 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

はあなたがしようとしているEXACT正規表現を投稿することができます動作しますか? –

答えて

3

だけでなく、単語vanilla任意でする必要がありますが、また次の空白、すなわち、(vanilla)?を行います"バニラ"の後のスペース。 Javaのregex tester使用

1

が、これは

I like (vanilla)?ice cream 

おそらく、余分なことを忘れて試してみてください。

0

I like [vanilla]? ice cream 

は、しかし、動作しませんか? 0を指定すると、1

I like [vanilla]* ice cream 

+0

これは、「バニラ」の一部であるキャラクタの0回以上の出現と、どちらか一方のスペースに一致します。「私はalinnaaaaavavvaアイスクリームが好きですが、アイスクリームが好きです」は一致しません。 –

+0

いいえ、それはしません...(答えには、@Michael Haysのコメントではありません)。 –

関連する問題