0

我在 C# 中有这种模式:

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

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

端口-wwn(供应商):50:01:73:80:12:60:01:41
永久端口-wwn(供应商):50:01:73:80:12:60:01:41

我只想匹配第一行。还有其他行搞砸了我正在解析的数据,其中第二行如下所示:permanent-port-wwn (vendor) :00:00:00:00:00:00:00:00

所以,我不想匹配包含永久的行。我可以做一个单独的 if 来检查传入的字符串,但这很混乱。我用来检查正则表达式的在线站点在第二行失败,但在代码编译后 C# 没有。

4

3 回答 3

0

我突然想到,我不想要的模式总是以 00 开头:

所以我将正则表达式更改为:

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

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

于 2012-09-06T02:30:46.093 回答
0

一个正则表达式

string WWPNMatchString = @"^port-wwn\s+\(vendor\)\s+:(?<wwpn>..:..:..:..:..:..:..:..)";
于 2012-09-06T02:31:30.720 回答
0

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

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

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

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

于 2012-09-06T02:34:33.667 回答