-1

次の文があります。

String sentence = "FirstName LastName (pronounced as: X) (born 1 June 1900)";

ブラケット間のテキストに単語が含まれている限り、ブラケット間のすべて(ブラケットを含む)を取り除く正規表​​現が必要です:発音

次のような出力を生成します。

"FirstName LastName (born 1 June 1900)"

方法を教えてください... ありがとう。

4

4 に答える 4

2

次の正規表現を試すことができます。

(?=\\([^()]*?pronounced)\\([^)]+\\)

そして空の置換文字列。

Java コード:

String input = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
String result = input.replaceAll("(?=\\([^()]*?pronounced)\\([^)]+\\)", "");
于 2013-09-15T16:00:17.010 に答える
1

先読みの必要はありません。否定された char クラスが仕事をします:

/\([^)]*pronounced[^)]*\)/
于 2013-09-15T16:20:08.193 に答える
1

次のようなパターンが機能するはずです。

\((?=[^)]*pronounced)[^)]+\)

これは、リテラルが後に続く以外の 1 つ以上の文字が続くリテラルに一致します(が、リテラルも含まれている場合にのみ一致します。))pronounced

\Java 文字列リテラルのをエスケープすることを忘れないでください。

output = input.replaceAll("\\((?=[^)]*pronounced)[^)]+\\)", "");
于 2013-09-15T16:00:33.790 に答える