2013-03-28 35 views
0

我的文件中有每行開頭的特定模式用於格式化文件的正則表達式

1000000179|abcd..... 
1000000180|wedwedw... 
1000000181|wnewedwed... 

我已經打開Visual Studio中的文件,需要一個RE找到任何線在不正確的數據開始序列。像下面的第3行和第4行是無效的。如何使用RE

1000000179|abcd..... 
1000000180|wedwedw... 
1000xyadaa|wnewedwed... 
%dfgxyadaa|wnewedwed... 
+0

那麼模式是什麼?總是「1000」,然後是6個字母數字,然後是管道? – Sepster 2013-03-28 11:20:23

+0

模式是10個數字後跟管道 – mhn 2013-03-28 11:23:21

+0

嘗試'^ \ d {10} \ |' – Kent 2013-03-28 11:25:59

回答

0

東西作爲^[^0-9]{1,10}[^|].*$簡單應該檢測不與10個數字和一個管啓動任何線隔離。

如果你只是想只選擇該行的第一部分,然後^[^0-9]{1,10}[^|]

注意:您可以\D替代[^0-9](區分大小寫!)如果你喜歡的語法,如^\D{1,10}[^|]

要扭轉邏輯(即找到正確的線),使用^[0-9]{10}\|.*$^\d{10}\|


編輯:對於VS2005的查找/替換「正則表達式」:

要找到那些不與10個NUMERICS後跟一個管道開始行:^~([0-9]^10\|)

要找到那些開始與10個NUMERICS後跟一個管道線:^[0-9]^10\|

請注意,\d\D語法不起作用,根據@ KennethK。的以下評論。 VS正則表達式中的單個數字即[0-9]的等效值爲:d

請參考http://msdn.microsoft.com/en-us/library/2k3te2cs(VS.80).aspx瞭解VS2005中可用的正則表達式列表。

+0

它適用於視覺工作室嗎?它沒有檢測到沒有10個數字開始的行,並且管道 – mhn 2013-03-28 11:34:17

+0

@mhn沒錯,因爲你說「需要一個RE來找到任何以正確順序開始的行** NOT **」。 :-)要反轉邏輯,請將^從方括號內移除,或者如果您使用該語法,請使用\ d而不是\ D。 – Sepster 2013-03-28 11:37:09

+0

沒有運氣:(是因爲我使用的是Visual Studio?如果我需要使用其他工具,請提出 – mhn 2013-03-28 11:44:22

0

如果我理解你正在努力尋找的,可以嘗試下面的表達式:

^~(1000000).*$ 

^.*$所有功能,如典型的正則表達式,而~(...)表示「不匹配」。因此,該模式的總體目標是查找不以字符串「1000000」開頭的行。

+0

據我所知,一個格式良好的字符串必須以十位數字開頭,後面跟一個管道。 (在評論中澄清了這一點,而不是在問題本身中)。與之相反的是'^〜(:d^10 \ |)。* $' – 2013-03-29 20:06:00