【问题标题】:Regex for remove everything after "_" in all anchor Tag [closed]用于删除所有锚标记中“_”之后的所有内容的正则表达式 [关闭]
【发布时间】:2019-04-24 07:42:10
【问题描述】:

我希望任何正则表达式删除所有锚标记中下划线后的所有内容,例如

输入:<a href="/category_592">Text</a>

输出<a href="/category">Text</a>

【问题讨论】:

  • 这个问题不适合正则表达式。您是否考虑过将文本解析为 HTML,然后更改所有 a 标签的 href 属性的值?

标签: regex string notepad++


【解决方案1】:

虽然您应该避免使用正则表达式解析 HTML,但由于这是一种不会嵌套的锚标记,因此您可以使用正则表达式进行快速工作。使用此正则表达式匹配 group1 和 group2 中的数据,

(<a\s+[^>]*?href=["'][^']*?)_.*?(["'])

并将其替换为\1\2(或$1$2,根据语言)

Check the demo

您还没有提到在 href 属性中有多个下划线的情况下应该如何替换数据,所以现在我已经这样做了,它替换了从第一次出现的下划线开始的所有内容,但是您可以轻松地做到这一点通过使正则表达式为贪婪来最后出现下划线。

【讨论】:

  • 非常感谢@pushpesh,但这个正则表达式有效,但只有第一个锚标记,不是每个。
  • @engg.Furqan:更新了正则表达式,现在它将匹配任意数量的标签。如果您还有任何疑问,请告诉我。
  • 真的很感谢@pushpesh 现在解决了。
  • 很高兴帮助 Furqan :)
  • 赞赏 <a href="/CategoRy_592">Text</a> 输出&lt;a href="/category_592"&gt;Text&lt;/a&gt; 我正在尝试查找&lt;a(\w*)&lt;/a&gt; replase 到\l$1 你能帮忙吗我来纠正这个。提前感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
相关资源
最近更新 更多