用于查找包含 sublime 域的 href 的 PCRE 正则表达式?

PCRE Regular Expression for to find href which contains domain in sublime?

我一直在尝试寻找一个 PCRE 正则表达式来查找包含 www.aliexpress.com 的所有 links,如 :

 <a href="http://www.aliexpress.com/af/category/200118006.html?spm=2114.030010108.0.774.bcoKC8&amp;isAffiliate=y&amp;g=y">Parkas</a> 

我只想选择整个 href 或双引号下的 link 以将其替换为 # 但我想让它与 sublime 一起工作所以任何方式都会很高兴想知道!

我试过了,但我只能搜索整个 <a href="" > </a>,如 :

<\s*a[^>]*>(.*?)<\s*/\s*a> 

这应该有效:

(?<=\bhref=)\s*"([^"]*www.aliexpress.com[^"]*)

demo

因为 Sublime Text uses the Perl Compatible Regular Expressions (PCRE) engine from the Boost library 你可以使用 \K 运算符来省略所有匹配的文本到 "emulate" 可变宽度回顾。

要将所有 href 链接与 www.aliexpress.com 匹配,请使用

\bhref=\s*"\K[^"]*www\.aliexpress\.com[^"]*

参见 Demo 1

www.aliexpress.com 之后带有可选 /category 子字符串的先前类型链接可以与

匹配
\bhref=\s*"\K[^"]*www\.aliexpress\.com(?:/category\b)?[^"]*

参见 Demo 2

正则表达式细分:

  • \bhref=\s*"\K - 匹配整个单词 href 后跟 0 个或多个空格符号和双引号,并且 省略 全部
  • [^"]* - 匹配除 "
  • 之外的 0 个或多个字符
  • www\.aliexpress\.com - 按字面意思匹配 www.aliexpress.com
  • (?:/category\b)? - 匹配 /category 子串或不匹配(因为 ? 表示 匹配 1 或 0 次出现
  • [^"]* - 匹配除 "
  • 之外的 0 个或多个字符