根据http://gskinner.com/RegExr/,它提供了一个正则表达式模式来搜索HTML标记:
A) <[^<]+?>
- 匹配HTML标记的简化示例
它有效,但我改变了如下的正则表达式模式,它也有效。
B) <[^<]+>
或 C) <[^<]+.>
我想问一下 A), B)和 C)之间有什么不同?
由于
答案 0 :(得分:2)
+?
就是所谓的懒惰。延迟匹配将匹配尽可能少的字符。例如,给定<[^<]+?>
的{{1}}将匹配<blah>>
,即使它可能匹配<blah>
,因为它匹配尽可能少的字符。
相反,<blah>>
被称为贪婪,并且可以匹配最可能的字符。它将匹配+
,因为它是满足正则表达式的最大匹配。
<blah>>
是一个意思是“匹配任何东西”的字符,并且它自己(后面没有+,*等)意味着“匹配任何东西”。 .
中的.
不会修改+.
,它是一个新元素。
正如您所看到的,我们使用+
因为HTML代码会在遇到的第一个+?
时关闭,>
会在关闭HTML代码后立即结束。