1. ホーム
  2. regex

[解決済み] Regex 2つの文字列間のすべての文字にマッチする

2022-03-16 18:17:58

質問

例 This is justna simple sentence".

This is"と"sentence"の間のすべての文字にマッチさせたいのです。改行は無視されるはずです。正しい構文がわかりません。

どのように解決するのですか?

例えば

(?<=This is)(.*)(?=sentence)

Regexr

lookbehindを使用しました。 (?<=) とルックアヘッド (?=) というように、quot;This is" と "sentence" が一致しないようにしますが、これはユースケース次第で、単に次のように記述することもできます。 This is(.*)sentence .

ここで重要なのは、正規表現エンジンの "dotall" モードを有効にすることです。 . が改行と一致します。しかし、これをどのように行うかは、お使いの正規表現エンジンによって異なります。

次に、もしあなたが .* または .*? . 最初のものは貪欲で、文字列の最後の "sentence" までマッチし、2番目のものは怠惰で、文字列の次の "sentence" までマッチするようになります。

更新

Regexr

This is(?s)(.*)sentence

ここで、(?s)はdotall修飾子をオンにすることで、? . は改行文字と一致する。

アップデート2

(?<=is \()(.*?)(?=\s*\))

は、例の "This is (a simple) sentence" と一致していますね。についてはこちらをご覧ください。 Regexr