正規表現で文字列を除外する方法が見つかりません:
元 :
<div\s[^>]+>
<div
閉じる前にすべての文字を検索します>
<div...>
今、私はその後everything but a </div>
を見つけたいと思います</div>
。何かのようなもの :
<div\s[^>]+>[^(</div>)]*</div>
問題は[^abc]
、a または b または c を除外することです。「abc」文字列を除外するにはどうすればよいですか?
正規表現で文字列を除外する方法が見つかりません:
元 :
<div\s[^>]+>
<div
閉じる前にすべての文字を検索します>
<div...>
今、私はその後everything but a </div>
を見つけたいと思います</div>
。何かのようなもの :
<div\s[^>]+>[^(</div>)]*</div>
問題は[^abc]
、a または b または c を除外することです。「abc」文字列を除外するにはどうすればよいですか?
それが、否定先読みアサーションの目的です。
<div\s[^>]+>(?:(?!</div>).)*</div>
説明:
(?: # Match...
(?!</div>) # unless we're right before a </div>
. # any character.
)* # Repeat as needed
スラッシュをオプション ( (?!</?div>)
) にすることもできます。そうしないと、のようにネストされたタグでつまずいてしまいます<div> foo <div> bar </div> baz </div>
。
貪欲でない正規表現を使用することは可能です
<div\s[^>]+>(.*?)</div>