如果成功则需要失败

时间:2012-09-06 02:15:54

标签: c# regex

我在C#中有这种模式:

 string WWPNMatchString = @"port-wwn\s+\(vendor\)\s+:(?<wwpn>..:..:..:..:..:..:..:..)";

我有这两行的文件在文件中成对出现几次:

port-wwn(供应商):50:01:73:80:12:60:01:41
permanent-port-wwn(供应商):50:01:73:80:12:60:01:41

我只想匹配第一行。还有其他行搞砸了我正在解析的数据,其中第二行看起来像这样: permanent-port-wwn(供应商):00:00:00:00:00:00:00:00

所以,我不想匹配包含永久性的行。我可以单独检查传入的字符串,但这很麻烦。我用来检查我的正则表达式的在线网站在第二行失败了,但在编译代码之后没有C#。

3 个答案:

答案 0 :(得分:0)

在我看来,我不想要的模式始终以00:

开头

所以我把正则表达式改为:

string WWPNMatchString = @"port-wwn\s+\(vendor\)\s+:(?<wwpn>[1-9].:..:..:..:..:..:..:..)";

这将排除wwpn组以0开头的任何内容 - 我所追求的值,有效值永远不会从0开始。

答案 1 :(得分:0)

正则表达式

string WWPNMatchString = @"^port-wwn\s+\(vendor\)\s+:(?<wwpn>..:..:..:..:..:..:..:..)";

答案 2 :(得分:0)

我假设您是逐行读取文件,并且每行都作为单独的字符串处理?

您可以使用^强制匹配从字符串的开头开始,如下所示:

@"^port-wwn\s+\(ven...

这将排除以“permanent - ”开头的行。