加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我们为什么要在正则表达式中更喜欢否定字符类?*?

发布时间:2020-12-14 06:02:53 所属栏目:百科 来源:网络整理
导读:我正在看 Regex的教程. 它是关于如何从这段html中获取class属性 pre class="ruby" name="code" 使用的正则表达式是 pre class="([^"]+)" name="code" 他们建议使用上面的而不是 pre class="(.+)" name="code" “因为它超出了报价.” 我不明白他们的意思.无论
我正在看 Regex的教程.

它是关于如何从这段html中获取class属性

<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和其他标记语言与正则表达式匹配,因为有更好的工具.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读