我正在看
Regex的教程.
<pre class="ruby" name="code">
使用的正则表达式是
<pre class="([^"]+)" name="code">
他们建议使用上面的而不是
<pre class="(.+)" name="code">
“因为它超出了报价.”
我不明白他们的意思.无论如何它只是工作但是为什么推荐第一个正则表达式.我错过了什么吗?请赐教.
提前致谢.
解决方法
.贪婪地匹配.例如,在
<pre class="ruby" size="medium" name="code">
它会匹配ruby“size =”medium.更糟糕的是,如果您在同一行上有两个标记,它将在标记边界上匹配:
<pre class="ruby" name="code">foo</pre> <pre class="python" name="code">bar</pre>
会导致ruby“name =”code“> foo< / pre>< pre class =”python! 因此,只要您确切知道HTML的外观,.可以工作,但一旦它意外地改变(因为HTML不会这样做),你的正则表达式不会简单地失败(如第二个那样)但它会匹配错误的东西. 因此,第二个正则表达式更安全(因为它更准确地说明允许匹配的内容).你通常应该尽量避免简单.或.*“匹配任何东西”,而是考虑你想要匹配的东西. 也就是说,出于完全相同的原因,您不应该尝试将HTML和其他标记语言与正则表达式匹配,因为有更好的工具.