根据http://gskinner.com/RegExr/ ,它提供了一个正则表达式模式来搜索 HTML 标签:
A) <[^<]+?>
- 匹配 HTML 标签的简化示例
它有效,但是我更改了正则表达式模式,如下所示,它也有效。
B) <[^<]+>
或C) <[^<]+.>
我想问A)、B)和C)有什么区别?
谢谢
最佳答案
+?
就是所谓的懒惰。延迟匹配将匹配尽可能少的字符。例如,<[^<]+?>
给定<blah>>
将匹配<blah>
即使它可以匹配 <blah>>
因为它匹配尽可能少的字符。
相反,+
被称为贪婪并匹配最多可能的字符。它将匹配 <blah>>
因为这是它可以匹配的满足正则表达式的最大数量。
.
是一个字符,意思是“匹配任何东西”,它本身(后面没有+、*等)意味着“匹配任何东西”。 .
在+.
不修改+
,它是一个新元素。
如您所见,我们使用 +?
因为 HTML 标记在第一个 >
处结束遇到过,并且+?
通过在可以关闭 HTML 标记时立即结束来反射(reflect)这一点。
关于regex - 使用正则表达式搜索 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377272/