0

JAVAコードで使用される次の正規表現の何が間違っていますか:

    "(\\s[(]((\\w)*(\\s)*)*[)])"

これは、" (foo bar foo bar)" などの文字列のパターンを置き換えるためのものです。ありがとうございました。

4

1 に答える 1

1

まず、正規表現をテストする最良の方法は、正規表現テスターを使用することです

次に、Regex Cheat Sheetのコピーを入手すると便利です

あなたの問題に関しては、かっこは正規表現では予約文字であるため、これらの文字を を使用してエスケープする必要があります\が、Java では\特殊文字であるため、2 回エスケープする必要があります。

\\(.*\\)

これは、2 つの括弧の間のすべてに一致します。

単語の文字とスペースだけに一致するように制限するには、次を使用できます。

\\((?:[\\w]|[\\s])*\\)

ここで何が起こっているかを説明するには:

  • (.)*括弧内の正規表現に一致する任意の数の文字に一致するように指示します
  • (?:.)*?:括弧はグループ化を意味するので、グループの内容には興味がないことを付け加えます。
  • [\\w]|[\\s]単語文字または空白文字のいずれかに一致するように指示します
于 2012-05-24T19:42:03.007 に答える