2015-10-06 19 views
0

我正在使用記事本++和使用查找和替換刪除行中的所有內容,除了我的字符串找到的匹配。除了我的匹配正則表達式,有人能幫我刪除一行嗎?

例如

第1行。這是示例。 775 657 7576採樣線1

線2.第二個採樣線。 661-525-5366樣品行2

行3.第三行樣本466.755.7888。 3號線

使用正則表達式\ d {3} \ d?\ d {3} \ d?\ d {4}匹配上面的數字,並刪除其尊行一切,導致它看起來像這樣

線1 775 657 7576

線2 661-525-5366

線3 466.755.7888

請幫

回答

0

這是很容易,其實。只需使用正則表達式:

(?>\d{3}\D?\d{3}\D?\d{4}\K|[\s\S]) 

工作原理:

這個正則表達式嘗試匹配表明了自己的正則表達式的電話號碼。如果確實如此,那麼它將從與\K的匹配中移除它。如果不是,那麼它只會捕獲1個字符[\s\S].的更好版本,因爲它也捕獲換行符)。

使用此正則表達式查找其他所有內容並將其替換爲空白。

Regex101

0
^.*?\b(\d{3}\D?\d{3}\D?\d{4})\b.*$ 

您可以使用此通過$1\1更換。 See demo.

+0

謝謝。在我那樣做之後。我使用[^ 0-9 \ n]並用什麼都替換,以便我得到一個10位數字,例如5554445555,其他一些行給我的數字超過10個字符或少於10個字符長。我如何刪除不完全是10個數字的任何內容? – user3283015

+0

@ user3283015檢查編輯 – vks

0

這可以使用正則表達式查找和替換中的分組概念來完成。
將您的線分成3個部分,並將其替換爲您希望的部分。

查找內容:(^.*)(\d{3}\D?\d{3}\D?\d{4})(.*)

  • 部分的模式之前(^.*)
  • 你的匹配模式(\d{3}\D?\d{3}\D?\d{4})
  • 您的匹配模式後(.*)

替換爲:\2

  • 與第二組進行更換

快照如何可以做到這一點 enter image description here