2011-08-02 10 views

答えて

8

^ "は文字列の先頭にマッチ" を意味する(より正確に、の位置が文字列の最初の文字の前にあるため、実際の文字と一致しません)。

$は、「文字列の最後に一致する」(文字列の最後の文字の後の位置)を意味します。

両方ともanchorsと呼ばれ、文字列全体が部分文字列ではなく一致するようにします。

あなたの例では、最初の正規表現は[email protected]でマッチを報告しますが、一致するテキストは[email protected]となるでしょう。 2番目の正規表現は単に失敗します。 (あなたがそれを使用している場合、例えばJavaの.matches()

慎重に、いくつかの正規表現の実装は、暗黙のうちに、文字列の開始/終了時に正規表現を係留。次いで

マルチオプションが(例えば、又はPattern.compile("^\\[email protected]\\w+[.]\\w+$", Pattern.MULTILINE)を行うことによって、(?m)フラグを使用して)設定されている場合、^$ラインの開始および終了時に一致します。

+0

文字列「[email protected]」は「\\ w + @ \ w + [。] \\ w +」と完全に一致しますが、「^ w\ @ [。] \\ w + $ "?私はjavaでテストして、文字列は両方のケースで失敗しました。私はまだ明確な違いは見当たりません。私の場合に基づいてポイントを表示できますか? – ipkiss

+0

正規表現では、@記号の後に1つのドットしか使用できません。 '^ [\\ w。] + @ [\\ w。] + \\。\\ w + $'を試してください。まだ完全ではありません(正規表現は電子メールアドレスと一致するものではありません)が、もう少し寛容です。 –

+0

はい、あなたの答えによると、文字列 "[email protected]"は "\\ w + @ \ w + [。] \\ w +"とマッチしますが、 "^ \\ w + @ \\" w + [。] \\ w + $ "となります。このコード:String s = "[email protected]"; System.out.println(s.matches( "\\ w + @ \ w + [。] \\ w +")); => false – ipkiss

関連する問題