2013-03-28 63 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