使用 Notepad++ Regex 刪除錨點

使用 Notepad++ Regex 刪除錨點

我嘗試過尋找其他答案,當我嘗試閱讀正規表示式上的任何內容時,我的大腦就會爆炸,我就是無法理解它,無論我讀了多少次,或者讀得多慢。

我嘗試使用 Notepad++ 從文件中刪除它:

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

但我不確定需要在 Notepad++ 中使用什麼正規表示式搜尋字串來執行此操作。其中 SOME RANDOM WORD 所在的位置實際上可以是任何長度的任何內容,但其上的標籤/頁面的開始和結束是相同的。

我只想刪除任何實例

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

並用任何東西替換它。

答案1

在「尋找內容」行中,輸入以下內容:

<a style="text-decoration:none" href=".+">\.</a>

替換為:留空。

然後點選全部替換。

這裡的關鍵是使用.+這意味著,找到任何一個或多個字元。這基本上意味著,任何具有相同文字但具有任何 url 的 url 都將被找到並替換。什麼也沒有。可以過濾掉 url 或其他內容,但鑑於您的帖子指定您希望將整個字串替換為空,因此未提供此信息,以免您進一步感到困惑。

確保您選擇底部的正規表示式,但我認為您已經想到了這一點。

另外,您必須轉義特殊字符,例如 .如果您的連結有實際文字而不是 .,您也必須將其替換\..+

答案2

我正在提交另一個答案,不是因為我想破壞已接受的答案,這非常好,而是因為您的搜尋表達式幾乎是正確的。

令人困惑的是,在檔案遮罩中,它*意味著任意長度(包括零)的任意字串,而在正規表示式中,它意味著先前模式的任意次數。因此,您要求的是一個在子句中的引號之間(僅)包含任意數量的斜杠的字串href=

您需要的是在搜尋表達式中,這使用了檔案遮罩(匹配任何單一字元)和正規表示式(其中使用任意數量的任意字元)href="/.*"之間的另一個巨大差異。?..*

的不同用法.意味著,>.</a>在搜尋表達式的末尾,意味著>和之間的任何字元</a>都將匹配:要僅匹配文字,.您需要告訴搜尋表達式您要將其與文字匹配.,並且可以透過前面的操作來完成此操作與.所謂的逃脫特點\。因此\.匹配一個字面值.\*匹配一個字面值*

如果正規表示式使用與檔案遮罩相同的匹配項,您的搜尋字串將完美地工作,但不幸的是它們沒有,您需要的是:

<a style="text-decoration:none" href="/.*">\.</a>

正如您所看到的,它與您嘗試的幾乎沒有什麼不同,只有兩個額外的(但關鍵的)字符,但我希望我的解釋可以給您進一步追求它們的信心:您一定會再次需要它們。

我不能否認它們是令人生畏的,我也不能推薦一種簡單的方法,儘管你可能會發現這個測試儀有用(儘管它確實/被視為特殊字符,需要在其前面加上轉義字符\- 它在某些上下文中確實如此,但不是您的上下文,因此如果您在搜索表達式上嘗試它,請考慮到這一點)。

不要因為這些表達式看起來很官樣文章而被推遲:我已經使用它們很多年了,但仍然有很多超出我的範圍,尤其是檢查二進制數,它們是 3 的倍數維基百科頁面- 我已經找到了解釋,但即使擁有數學學位,我也無法詳細理解該表達式。

您了解檔案掩碼,並且透過使用正規表示式所需的簡單修改,您就有了一個起點。

相關內容