1. ホーム
  2. java

[解決済み] 先行するものがない場合にマッチングする正規表現

2022-02-19 22:55:22

質問

Javaでの正規表現で、パターンの前に特定の文字がない場合にのみマッチするような正規表現を書きたいのですが、どうすればよいですか?例えば、以下のような感じです。

String s = "foobar barbar beachbar crowbar bar ";

barの前にfooがない場合にマッチしたい。だから、出力は次のようになる。

barbar
beachbar
crowbar
bar

解決方法は?

を使用したい。 negative lookbehind このように

\w*(?<!foo)bar

ここで (?<!x) は、この時点以前に "x"を持たない場合のみ"を意味します。

参照 正規表現 - 見回り をご覧ください。

編集 を追加しました。 \w* の前の文字(例:"beach")をキャプチャするようにしました。