仅当包含/时,正则表达式才能匹配引号

时间:2017-07-25 19:39:15

标签: regex

我正在努力帮助某人清理一堆锚标签。最初相对路径使用了一堆子目录,现在他们已将所有文件移动到一个目录中,但现在需要通过从中删除对子目录的所有引用来清理链接。有数千个文件需要修改,我正在尝试编写一个可靠的正则表达式来清理它们。

以下是我遇到的行类型的示例,并且无法编写适用于所有类型的内容。

开始:

<a href="Choosefile.html">Choosing a File Type</a>
<a href="Deletefiles.html">Deleting a File</a><br /><a href="Exporting_a_File/Exportwindow.html"> 
<a href="Importing_a_File/Importwindow.html">
<a href="Searching/Searching_for_a_File/Searchpanel.html">

目标:

<a href="Choosefile.html">Choosing a File Type</a>
<a href="Deletefiles.html">Deleting a File</a><br /><a href="Exportwindow.html"> 
<a href="Importwindow.html">
<a href="Searchpanel.html">

目前我有以下表达式,但当同一行上有多个锚标记时,它不起作用。

(?<=href\=([\"'])).*(?<=[a-z])(?:\\|\/)(?=[a-z])

1 个答案:

答案 0 :(得分:0)

如果您的数据一致,您可以使用

\shref=(["'])\K(?:(?!\1).)*/

请参阅regex demo(注意/可能需要转义,这取决于您使用正则表达式的位置。)

  • \s - 匹配空白
  • href= - href=子字符串
  • (["']) - '"报价(第1组)
  • \K - 省略目前为止匹配的文字
  • (?:(?!\1).)* - 除'"以外的任何零个或多个字符(该值取决于捕获到第1组中的内容)
  • / - /字符。