正则表达式字符串排除



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

前任:

<divs[^>]+>

会在闭幕前找到一个<div和每个角色>

现在我想找到<div...>然后everything but a </div>然后是</div>.像这样:

 <divs[^>]+>[^(</div>)]*</div>

问题是[^abc]排除了 a 或 b 或 c。如何排除"abc"字符串?

这就是负面前瞻断言的用途:

<divs[^>]+>(?:(?!</div>).)*</div>

解释:

(?:          # Match...
 (?!</div>)  # unless we're right before a </div>
 .           # any character.
)*           # Repeat as needed

您可能希望将斜杠设置为可选((?!</?div>));否则您将像<div> foo <div> bar </div> baz </div>一样被嵌套标签绊倒。

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

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

最新更新