文字列から重複した単語を削除する問題に取り組んでいます。例えば、重複した単語を削除するJavaの正規表現
入力:Goodbye bye bye world world world
出力:私はオンラインリソースから作業パターンを持っているが、私はその中のすべての内容を理解することはできませんよGoodbye bye world
。 (\\b\\W+\\b\\1\\b)*
:
- 初期
\\b
が (\\w+)
マッチ1文字以上、この表現で- ワードbounariesを一致させることである。
String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*";
は、ここに私の理解です。 \\b
はワード境界に一致します
b。 \\W+
は、1つ以上の非単語文字と一致します。
c。 \\b
は再び単語バウラーに一致します
d。 \\1
???私はこれが何であるか知りませんが、これがなければ動作しません。
c。あなたが見ることができるように\\b
は再び言葉bounary
のために一致して、私の主な混乱は、アイテム3、特に\\1
についてです。 誰でももっと詳しく説明できますか?
こんにちは。私はいつもregexrを使って正規表現を試して試しています(ここをクリックしてください)(http://regexr.com/)、メッセージを表示する式の上にポインタを置いて、何が起こっているのかを説明してください。 –
@GabrielMarques、 。しかし、このウェブエディタでは、私のパターンも、anubhavaによって書かれたパターンも動作しません。構文はjava regexと同じですか? – drdot
はい、二重バックスラッシュ文字 '\'を削除しようとするとうまくいきます。二重バックスラッシュを使用すると、式を文字列に書くことができます。 –