我需要在几十个不同的html文档中找到并替换成千上万的目标URL(ahrefs)...所有的ahref格式都不同。我需要用一个统一的目标网址替换所有各种目标网址。
有两个障碍:
2.在这些文件中,ahrefs没有统一的结构。有些在a和href之间有class = stuff。例子包括:
<a class='image' href="examplelinkone.com">
<a class='image ' href="examplelinkone.com"> ( space between e and ' )
<a class='someotherclass' href="examplelinktwo.com"
当我像这样使用正则表达式时,我可以成功找到所有ahrefs的实例......
<a[^<>]+href="[^<>]+"
...但是我无法弄清楚如何只更换href = part的双引号之间的内容,并且单独留下a和href之间的任何内容
答案 0 :(得分:0)
您需要使用捕获组。
(<a[^<>]+href=")[^<>]+(")
在替换部分中,您需要这样做,
$1replacement-string$2
$1
表示我们正在反向引用组索引1(<a[^<>]+href="
)中存在的字符。接下来是双引号内的部分。这部分被替换为您替换字符串的字符串。最后,第二个被捕获的组被反向引用以获得最后一个"
符号。
答案 1 :(得分:0)
与此模式类似的内容应该可以消除href=
的引号之间的任何内容:
\b(href=\W)[\w\s.]+(?=\W)\b
替换为:
$1
- 在TextMate中测试:
<a class="image" href="examplelinkone.com">anything<a href="more">
<a class='image ' href='examplelinkone.com'> ( space between e and ' )"<something>"All ok"</a>
<a class='someotherclass' href="examplelinktwo.com"
结果:
<a class="image" href="">anything<a href="">
<a class='image ' href=''> ( space between e and ' )"<something>"All ok"</a>
<a class='someotherclass' href=""