0

正規表現で文字列を除外する方法が見つかりません:

元 :

<div\s[^>]+>

<div閉じる前にすべての文字を検索します>

<div...>今、私はその後everything but a </div>を見つけたいと思います</div>。何かのようなもの :

 <div\s[^>]+>[^(</div>)]*</div>

問題は[^abc]、a または b または c を除外することです。「abc」文字列を除外するにはどうすればよいですか?

4

2 に答える 2

3

それが、否定先読みアサーションの目的です。

<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>

于 2013-01-23T11:46:06.263 に答える
1

貪欲でない正規表現を使用することは可能です

<div\s[^>]+>(.*?)</div>
于 2013-01-23T11:46:26.253 に答える