次の文があります。
String sentence = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
ブラケット間のテキストに単語が含まれている限り、ブラケット間のすべて(ブラケットを含む)を取り除く正規表現が必要です:発音。
次のような出力を生成します。
"FirstName LastName (born 1 June 1900)"
方法を教えてください... ありがとう。
次の正規表現を試すことができます。
(?=\\([^()]*?pronounced)\\([^)]+\\)
そして空の置換文字列。
Java コード:
String input = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
String result = input.replaceAll("(?=\\([^()]*?pronounced)\\([^)]+\\)", "");
先読みの必要はありません。否定された char クラスが仕事をします:
/\([^)]*pronounced[^)]*\)/
次のようなパターンが機能するはずです。
\((?=[^)]*pronounced)[^)]+\)
これは、リテラルが後に続く以外の 1 つ以上の文字が続くリテラルに一致します(
が、リテラルも含まれている場合にのみ一致します。)
)
pronounced
\
Java 文字列リテラルのをエスケープすることを忘れないでください。
output = input.replaceAll("\\((?=[^)]*pronounced)[^)]+\\)", "");