0

我找不到如何在我的正则表达式中排除字符串:

前任 :

<div\s[^>]+>

将在结束前找到一个<div和每个字符>

现在我想找到<div...>then everything but a </div>then a </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>));否则你会被嵌套标签绊倒,比如 in <div> foo <div> bar </div> baz </div>

于 2013-01-23T11:46:06.263 回答
1

使用非贪婪的正则表达式是可能的

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