我正在尝试在输入字符串中查找每个“a -> b,c,d”模式。 我使用的模式如下:
"^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$"
这个模式是一个C#模式,"\t"代表制表符(它是单个转义字面量,由.NET字符串API解释),"\w"代表预定义的正则表达式字面量类,双重转义以被.NET字符串API解释为"\w",然后由.NET Regex API解释为“WORD CLASS”。
输入为:
a -> b
b -> c
c -> d
该函数是:
private void ParseAndBuildGraph(String input) {
MatchCollection mc = Regex.Matches(input, "^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$", RegexOptions.Multiline);
foreach (Match m in mc) {
Debug.WriteLine(m.Value);
}
}
输出结果为:
c -> d
实际上,“$”特殊字符的行结束有问题。如果我在“$”之前插入“\r”,它就可以工作,但是我认为“$”会匹配任何行终止符(使用多行选项),特别是Windows环境中的\r\n。难道不是这样吗?
\r?
: http://msdn.microsoft.com/en-us/library/h5181w5w.aspx#End - Alan Moore