正则表达式字符串排除

时间:2013-01-23 11:43:52

标签: regex

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

前:

<div\s[^>]+>

会在结束<div

之前找到>和每个字符

现在我想找到<div...>然后everything but a </div>然后找</div>。类似的东西:

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

问题是[^abc]不包括a或b或c。如何排除“abc”字符串?

2 个答案:

答案 0 :(得分:3)

这就是negative lookahead assertions的用途:

<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>中的嵌套标签。

答案 1 :(得分:1)

使用非贪婪的正则表达式

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