c#Regex模式找不到任何匹配项

时间:2017-11-13 23:54:37

标签: c# regex

我正在使用此代码在文本文件中查找状态 -

string pattern = @"Lender:\s(?'name'\w.*)\n\n(?'address'\w.*),\s(?'state'\w\w)";
Regex rgx = new Regex(pattern, RegexOptions.Multiline);
MatchCollection matches = rgx.Matches(fileContents);
if (matches.Count > 0)
{
    return isStateAbbreviation(matches[0].Groups["state"].Value.Trim()) ? matches[0].Groups["state"].Value.Trim() : null;
}

这是我的示例字符串 -

Lender: Monetary Management of California, Inc. d/b/a Money Mart 

6311 DEBARR RD UNIT #U ANCHORAGE, AK 99504 907-644-0552 

问题是我的计数总是0,但是当我使用在线正则表达式测试器时,它会找到所有已识别的组。我的正则表达式模式有什么问题?

2 个答案:

答案 0 :(得分:1)

我认为您的文件很可能在每行末尾包含\r\n而不是\n,因为这是Windows的标准。

将您的模式更改为:

string pattern = @"Lender:\s(?'name'\w.*)\r\n\r\n(?'address'\w.*),\s(?'state'\w\w)";

答案 1 :(得分:0)

按照@ NetMage的回答,最好有:

string pattern = @"Lender:\s(?'name'\w.*)\r\n\r\n(?'address'\w.*),\s(?'state'\w\w)";