2015-12-02 95 views
0

我只是通過正則表達式回答其他隊友的問題,但在我的情況下找不到任何解決方案。 我也讀過一些助手在這裏給出的正則表達式引用,但我無法正確理解。Notepad ++中的RegEx刪除或替換文本範圍

我正在編輯我的網站站點地圖。在站點地圖中,我在等形式的鏈接:

http://foo.com/download/something-after-download-different-for-each-link-12-23-2014.html?id=my5sIUosfiQ&itag=18 

而且我想改變這些鏈接簡單:

http://foo.com/download/?id=my5sIUosfiQ&itag=18 

這裏,?id=itag=值對每個環節不同。所以,這些不應該爲已經提到的每個鏈接改變。

另外,something-after-download-different-for-each-link-12-23-2014.html部分對於每個鏈接也不同,因爲每個文件都有不同的下載。所以,我想基本上從每個鏈接中刪除這部分。我怎樣才能做到這一點?

+0

你好,歡迎堆棧溢出!我重新格式化了您的問題,使其更具可讀性(我希望我沒有破壞任何內容)。當你有時間時,查看編輯器的幫助部分,它有一些漂亮的功能,特別是對於代碼格式。現在,對於你的問題 - 一個前/後的例子可能不足以讓我們猜測涉及的規則。它是簡單地「在'/ download /'之後刪除所有內容直到第一個'?'字符」? –

+0

感謝您的編輯。我會在下次嘗試格式更好。其次:是的,我想刪除/下載/刪除部分後的一切?或直到第一個?如你所說。 –

回答

1

有些事情可能的工作 -
注意,發現一個錯誤/download/的可能性不跟
由非空白,也沒有問號,然後一個問號,
使這幾乎是不可能的匹配其他任何比URL的

如果NP ++使用\K結構,你可以使用這個
查找:/download/\K[^\s?]+(?=\?)
替換:沒什麼

如果沒有,你可以使用這個
查找:(?<=/download/)[^\s?]+(?=\?)
替換:沒什麼

,或者甚至更好
查找:(/download/)[^\s?]+(?=\?)
替換:$1

+0

我試過最後一個,它工作:)謝謝! –

0

你應該找到

http://foo\.com/download/[^?]*\?id=(.*) 

http://foo\.com/download/\?$1 

更換這...download/?id=...之間抓住一切並將其刪除。

+0

這沒有奏效。結果爲0發生替換。我試着從上面的答案,然後它的工作。 –

+0

「這不起作用」不是特別有用。由於它*可以*在你的測試字符串上工作,請考慮下次寫一個更具體的問題.... –

0

啓用正則表達式和使用此搜索&取代:

查找:

(http://foo.com/download/)(.*)(\?id=my5sIUosfiQ&amp;itag=18) 

替換:

\1\3