2013-06-26 33 views
1

我有一個很大的csv文件,我使用Notepad ++進行搜索。查找不會以連續83個逗號結尾的行

尋找正則表達式(或其他方法)來查找不以83個連續逗號結束的行。

我想是這樣的:

[^,]{83}$

+0

你爲什麼不試試? – devnull

+0

嘗試過,並得到0比賽...但我不相信'[^,] {83} $'是我想要的。那就是說找到83個非逗號然後結束? – FGreg

+0

「難道這就是說發現83個逗號然後行結束?」是的。 – ignis

回答

8

的問題[^,]{83}是它需要有是83個字符,同時沒有一個是逗號。因此,如果最後83個字符中的任何一個是逗號,那麼該表達式將失敗。使用負向前視搜索不好的東西會更容易,如果找到則會失敗。

^(?!.*,{83}$) 

enter image description here

+0

AFAIK記事本不支持環視 – Bohemian

+2

@Bohemian:目前的版本。 –

+0

如果您有權訪問最新版本的Notepad ++,請使用此解決方案。 – uptownnickbrown

0

所以,你想要的(開始的行或非逗號字符),其次是未更比82逗號。

(^|[^,]),{,82} 
1

您正在尋找83個在一行的末尾非逗號,但有些可能是用逗號。

使用查找隱藏在最終的線固定斷言,以前的83個字符不是所有逗號(一些允許爲,但不所有):

(?<!,{83})$ 
+0

雖然大大慢於@Denomales答案,但它的工作原理。 – FGreg

0

Denomales是正確的,但我這個去:

([^,],\{0,82\}|^,{0,82})$

這一條線匹配以非逗號字符結尾,隨後是0到82之間的任意逗號,或者整行少於83個逗號。

+0

是不是第一個包含在第二個選擇?另外,您可能必須明確提供量詞中的'0'......我現在不完全確定Notepad ++的正則表達式的風格,但是大多數風味不接受第一個被省略的數字。 –

+0

你是對的。我沒有經過測試就發佈了這個錯誤。我已經更新了我的回覆以更準確。 – gbrener