私は崇高なテキスト2エディターを使用しています。正規表現を使用して、すべてのh1
タグ。
今のところ、私はこのように使っています
<h1>.+</h1>
H1タグに改行がない場合、正常に機能します。
つまり
<h1>Hello this is a hedaer</h1>
正常に動作しています。
しかし、タグが次のようになっている場合は機能しません
<h1>
Hello this is a hedaer
</h1>
誰かが構文を教えてくれますか?
デフォルトでは、.
は改行文字を除くすべての文字に一致します。
この場合、.
が改行文字を含むすべての文字と一致するようにするDOTALLオプションが必要になります。 DOTALLオプションは(?s)
としてインラインで指定できます。例えば:
(?s)<h1>.+</h1>
ただし、量指定子のデフォルトの動作はgreedy(この場合は+
)であるため、機能しないことがわかります。つまり、できるだけ多くの文字を消費しようとします。できるだけ。量指定子?
の後に余分な+?
を追加して、lazy(できるだけ少ない文字数にする)にする必要があります。
(?s)<h1>.+?</h1>
または、正規表現を<h1>[^<>]*</h1>
にすることもできます。この場合、オプションを指定する必要はありません。
この質問は、すべての文字を検索しようとする正規表現に対するGoogleの検索結果のトップですbetween h1タグ私もその答えを出すと思いました。それが私が探していたものだったので。
(?s)(?<=<h1>)(.+?)(?=</h1>)
その正規表現を<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>
のようなサンプルテキストで使用すると、A title
のみが返されます。