RegEx:删除所有数字后跟逗号

时间:2018-01-04 10:29:21

标签: regex mariadb pcre

我的数据库中有HTML链接需要修改。 示例链接如下所示:

<a href="http://example.com/category/subcategory/1,23,456.html">My Link </a>

并希望将其更改为:

<a href="http://example.com/category/subcategory/456.html">My Link </a>

我已经尝试过:/(href=".*)\d+.*,/U但最终只删除了1,表单的链接。 我最大的问题是告诉表达式“查找任何出现的数字后跟逗号,但不是句号”。

有人可以帮我查找一个删除所有数字后跟逗号的RegEx吗? 请记住,这些链接属于非常大的HTML代码块。所以正则表达式必须只匹配这些链接。

1 个答案:

答案 0 :(得分:1)

关注regexp

(?:(?:^|(?<!\\)").*?href=")(*SKIP)(?!)|\d+,
  • (*SKIP)(?!)
    • (?!):失败
    • (*SKIP):避免回溯
  • .*?href=":在第一个href="序列
  • 之前匹配所有内容
  • (?:^|(?<!\\)")^行首播或"不在\
  • 之前

请注意,如果href可能出现在标记之外,则可能不安全。

test with regex101

使用相同技术的安全解决方案

(?:<![CDATA[.*?]]>|<!--.*?-->|>[^<]*<|href="|"[^">]*(?=>)|(?<!href=)"(?:\\.|[^"])*")(*SKIP)(?!)|\d+,