1. ホーム
  2. java

[解決済み] 正規表現を使って大きな文字列の部分文字列を見つけるためにJavaを使用する

2022-04-28 06:31:43

質問

このような文字列があった場合。

FOO[BAR]

私は、文字列から "BAR" 文字列を取得する汎用的な方法が必要で、角括弧の間にどんな文字列があっても、その文字列を取得することができます。

FOO[DOG] = DOG
FOO[CAT] = CAT

解決方法は?

欲のない量詞、具体的には*? などが欲しくなるのではないでしょうか。

Pattern MY_PATTERN = Pattern.compile("\\[(.*?)\\]");

これで、文字列にマッチするパターンができ、角括弧内のテキストを最初のグループに入れることができます。 ここで パターン API ドキュメント をご覧ください。

文字列を取り出すには、以下のような方法がある。

Matcher m = MY_PATTERN.matcher("FOO[BAR]");
while (m.find()) {
    String s = m.group(1);
    // s now contains "BAR"
}