2017-07-25 67 views
2

我試圖幫助某人清理一堆錨標記。最初相對路徑使用了一堆子目錄,現在他們已將所有文件移動到一個目錄中,但現在需要通過從子目錄中刪除所有對子目錄的引用來清理鏈接。有成千上萬的文件需要修改,我正在嘗試編寫一個可靠的正則表達式來清除它們。正則表達式之間的匹配,以便只包含/

下面是我遇到的線路類型的一個示例,並且無法寫出適用於所有類型的線路。

開始:

<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]) 

回答

0

如果你的數據是一致的,你可以使用

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

regex demo(注意:/可能需要逃避,這取決於你正在使用正則表達式)。

  • \s - 匹配的空白
  • href= - 一個href=
  • (["']) - 一個'"引號(第1組)
  • \K - 省略到目前爲止匹配的文本
  • (?:(?!\1).)* - 任何除'"以外的零個或多個字符(值取決於捕獲到組1中的內容)
  • / - a / char。
+1

謝謝你Wiktor。這工作。對於其他人而言,包含在鏈接正則表達式演示中的正則表達式是\ shref = [「'] \ K [^'」] * /我認爲它的效果更好一些。 – cforrester

+0

實際上是V2。我更新了最新的正則表達式版本的鏈接。 –