2016-11-25 3 views
0

このコードブロックを理解しようとしています。
メタ文字が$の場合、「私の財布を紛失しました」が有効な理由は何ですか?
私は、数値限定:?は1つの:を検索することができますが、同じ回答は2つあることを理解していますか?

このパターンの可能性のあるすべての一致を把握できますか?

"私は失った私の財布"

与えられた答えがある

"(|車| |携帯電話大理石財布)$ ^私は私:?を失いました" 「私は失った:財布を」
「私は私の財布を失った」
は、「私は失った:財布を」

「私は私の車を失いました」は、「私は私の車を失った」
「私は自分を失った:車」
は、「私は私を失った:車」

を「私は私の携帯電話を失った」私は私を失った「
を「私は私の携帯電話を失いました」:携帯電話の」
"私は私を失った:携帯電話"
"私は私のビー玉を失った"
"私は"

http://www.ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-1 クイズ2.2

を私のビー玉を失いました
+1

私はそれが単なる間違っていると思います。たとえば、http://www.regexplanet.com/advanced/java/index.htmlなどのJava正規表現テスト担当者でテストできます。私のウォレットが失われました。私はウォレットがこの正規表現と一致しません。 –

+1

https://regex101.com/r/biSzLq/1/tests – Tom

答えて

0

アップデート:ここで

は、状況を説明した画像です。それはタイプミスのようです。彼らは、次のように述べた。私たちは、これらの結果に私たちのパターンを制限したいなかった場合

、我々は 使用は彼らが言葉を使用

たちのパターンに必要なターミネータを追加することができlimit私たちのパターンto just these resultsこれは正確ではありません。これらの2つの文は一致しません。

"I lost my wallets" 
"I lost my: wallets" 

また、著者の誤植のようです。

+0

いいリンク。それは文字の 'ウォレット'文字と一致し、「ウォレット」の部分文字列として「ウォレット」を見つけるべきではありませんか? –

+0

@DuyĐặngまさに、それは 'find()'で起こりますが、 'matches()'は部分文字列を探しません。 – Ibrahim

+0

@Ibrahim - だから、 'find'は**最後に' $ 'を完全に無視すると言っていますか? – Addison

0

quizに提起質問は(少し下にスクロール)です:あなたはこのパターンのすべての可能な一致が

把握することはできますか?

"I lost my:? (wallet|car|cell phone|marbles)"

答えはこう述べています。

これはトリックの質問です!この正規表現は無制限ですので、あなたが見ている正規表現の一部を示し

た後(何も始まり^なし終了$を持っていません)。

"私は財布を紛失しました"は上記の正規表現でのみ有効です。 2番目の質問(あなたの質問で)それを許可しません。それはそれとは一致しません