在正则表达式中使用字符串而不是字符类

时间:2014-11-20 13:39:45

标签: regex

我有一个正则表达式来选择像标签一样的文本部分。

<([^<]*)>

它匹配这些文本

< some text between tag >

我使用[^&lt;] *来正则表达式是最优的。但问题是文本是html,它就像:

 &lt; some text between tag &gt;

如何为此代码编写正则表达式(而不是使用不合理)?

谢谢

4 个答案:

答案 0 :(得分:0)

这个可能适合您的需求:

&lt;((?:.(?!&gt;))+.)&gt;

Regular expression visualization

Debuggex Demo

但我不确定它比使用懒惰基数(即.*?)更有效率。

答案 1 :(得分:0)

/(<|&lt;)(.*)(>|&gt;)/gU 

Demo here

答案 2 :(得分:0)

以下正则表达式可以帮助您。

<[\s\w]+>([\s\S]+?)<[\\s\S]+>

在这里查看see how it works

答案 3 :(得分:0)

最后我找到了它:

&lt;((?:[^&]*|(?:&(?!gt;)))+)&gt;

比它快一点:

&lt;.*?&gt;