2016-07-06 173 views
0

刪除第二個逗號後第一個逗號和之前的一切的一切,我有以下字符串:正則表達式 - 符合

55,1001wuensche.com,0,354137264,1,"0.00 %",0,"0.00 %","2016-04-24 09:00:24" 
56,100hoch3.de,47,2757361,2,"0.00 %",0,"0.00 %","2016-02-11 00:42:10" 

我想第一個逗號之前刪除一切:55,56,

,一切之後第二個逗號。

結果應該是這樣的,其中只有域名是左:

1001wuensche.com 
100hoch3.de 

我用記事本++做到這一點。有人有想法嗎?感謝您的幫助!

+0

您是否嘗試過任何pattetn? –

回答

3
^.*?,(.*?),.*$ 

捕獲組$1將是前兩個逗號之間的所有內容。

+1

老實說,我不喜歡回答OP的問題,但是[標籤:正則表達式]中的生命是一個種族 –

+1

最後的'。*'可以是貪婪的。 (是的,我同意你的意見。正則表達式的問題似乎脫離了這個) – 4castle

+0

你是對的貪婪,我猜它會走到盡頭 –

2

您可以搜索^[^,]+,([^,]+).*$1更換。

如果存在格式不良的行(包含第一個逗號前的空字符串或沒有逗號的行)的機會,您可以使用更嚴格的模式,如^[^,\r\n]*,([^,\r\n]+).+

+0

如果第一個分組爲空,那麼這將失敗 –

+0

如果存在行沒有逗號也不會被刪除。 –

+0

@WillBarnwell正在假設格式化好的輸入..編輯的例外情況 –

0

另一種方法這樣的事情(在更一般的意義上)是「split由逗號行,到一個數組,然後只需要該數組的第二元件。

Yet-另一種方式來做到這一點是執行兩個「替代」的正則表達式,既明確地錨定到開始或到行的結尾(和第一個是「貪婪」,例如:

s/^.*\?,// 

s/\,.*$// 

概念「貪婪」是相當重要的,因爲在第一如果我們想匹配至少個字符,以至於停止在處遇到第一個逗號。因此,在第二種情況下,你想想要「貪婪地」識別(並設置爲空字符串)最大的匹配,你可以找到:即「其餘的串。」

找到簡單最明顯辦法做到這一點,因爲,有不可避免,誰家會想有一天改變這種邏輯。或者,有人會向您發送一個違反您的「巧妙,優雅」方法的文件。認爲「可測試,可維護」。