使用notepadd ++ regex

时间:2016-04-08 09:58:35

标签: regex notepad++

好吧我有这个多个静态html并且在每个html网址上都附有下划线我想要替换所有带有下划线的网址,这里是破折号的实际代码

1)

<a href="/category/how_to_tell_your_dad_that_you_are_pregnant/index.html">How to tell my dad that i am pregnant</a>

2)

< href="/premarital_sex/index.html">Premarital Sex</a>

应该是

1)

<a href="/category/how-to-tell-your-dad-that-you-are-pregnant/index.html">How to tell my dad that i am pregnant</a>

2)

< href="/premarital-sex/index.html">Premarital Sex</a>

我想替换所有静态HTML上的所有网址我该怎么做?或者甚至可能吗?

我尝试了htaccess但没有运气所以我只需要使用notepad ++或者powergrep,但我不确定如何或从哪里开始:(

先谢谢你们

修改

我想我就在附近:

(href=")*[_](.+?">)

2 个答案:

答案 0 :(得分:3)

\G运算符的帮助下,您可以轻松解决Notepad ++和Sublime Text中缺少无限宽度lookbehind的问题。

使用

(\bhref="|(?!^)\G)[^"<_]*\K_

并替换为-

enter image description here

<强>解释

  • (\bhref="|(?!^)\G) - 定义匹配的最左边界:应匹配整个单词href="\b是单词边界)或匹配上一次成功结束时的位置匹配(与(?!^)\G
  • [^"<_]* - 匹配"<_以外的0 +个字符
  • \K - 省略我们目前与缓冲区匹配的全文
  • _ - 仅匹配此字符 - 只会替换此字符。

答案 1 :(得分:1)

您需要另一个支持可变长度lookbehinds的编辑器。 NP ++没有。

所以,有了智能编辑器,可能是崇高的,你可以这样做:一气呵成: 找到这个:(?<=href="[^"]*)_(?=[^"]*")并将其替换为:-

在记事本++中你可以这样做: 找到这个:(href="[^"]*)_(?=[^"]*")并将其替换为:\1-。但是您必须多次单击“全部替换”。即具有最多下划线的网址有10个,那么你必须点击它10次。