20

私は崇高なテキスト 2 エディターを使用しています。h1すべてのタグ間のすべての文字を一致させるために正規表現を使用したいと思います。

今のところ、私はこのように使用しています

<h1>.+</h1>

h1タグに区切りがなければ正常に動作します。

つまり、

<h1>Hello this is a hedaer</h1>

その正常に動作します。

ただし、タグが次のようになっていると機能しません

<h1>
   Hello this is a hedaer
</h1>

誰かが構文を手伝ってくれますか?

4

2 に答える 2

47

デフォルト.では、改行文字を除くすべての文字に一致します。

この場合、.改行文字を含む任意の文字に一致させる DOTALL オプションが必要になります。DOTALL オプションは、インラインで として指定できます(?s)。例えば:

(?s)<h1>.+</h1>

ただし、量指定子のデフォルトの動作は貪欲(この場合はその) であるため、機能しないことがわかります+。これは、可能な限り多くの文字を消費しようとすることを意味します。quantifier の後にextra を追加して、遅延させる(できるだけ少ない文字を消費する)必要があります。?+?

(?s)<h1>.+?</h1>

または、正規表現は<h1>[^<>]*</h1>. この場合、オプションを指定する必要はありません。

于 2013-01-25T15:54:36.077 に答える
25

この質問は、 h1タグのすべての文字を検索しようとする正規表現のGoogle検索結果のトップであるため、私もその答えを出すと思いました。それが私が探していたものだったので。

(?s)(?<=<h1>)(.+?)(?=</h1>)

その正規表現は、次のようなサンプル テキストで使用すると<h1>A title</h1> <p>Some content</p> <h1>Another title</h1>A title.

于 2013-05-13T13:38:54.050 に答える