0

我正在尝试匹配和分组(任何短语)##date##(任何短语),但 val1 和 val2 为空。

Console.WriteLine("Subject: "+line);
Match match = Regex.Match(line, "(.)"+Regex.Escape("##date##")+"(.)", RegexOptions.IgnoreCase);
string val1 = match.Groups[1].Value;
string val2 = match.Groups[2].Value;
Console.WriteLine("Line#{0}: {1} Date: {2}", ++lineNo, val1, val2);

安慰:

Subject: http://www.website.com/url/is/masked.htm ##date## 3
Line#25:   Date: 

一个点不应该匹配任何东西吗?

4

2 回答 2

2

点匹配单个符号,在您的示例##date##中被两个空格包围。因此,您的组数学是spaceand space,看起来像“什么都没有”。

于 2012-04-07T23:36:29.617 回答
2

点匹配除换行符以外的单个字符。在您的情况下,它与之前和之后的空间相匹配##date##。请改用以下正则表达式:

Match match = Regex.Match(line, "(.*) ##date## (.*)", RegexOptions.IgnoreCase);

这匹配之前和之后的整个短语##date##,不包括两边的单个空格。

输出:

第 25 行:http ://www.website.com/url/is/masked.htm日期:3

于 2012-04-07T23:39:18.500 回答