我正在使用此代码在文本文件中查找状态 -
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,但是当我使用在线正则表达式测试器时,它会找到所有已识别的组。我的正则表达式模式有什么问题?
答案 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)";