我在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#。
答案 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 - ”开头的行。