我试图在输入字符串中找到每个“a→b,c,d”模式。 我使用的图案是这样的:EOL特殊字符不匹配
"^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$"
该图案是一个C#图案中,“\ t”的是指一种制表(其单个转义litteral,由.NET字符串API intepreted),则“\ w”指的是众所周知的正则表达式的预定义类,双重转义为由.NET STring 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。情况不是这样吗?
+1这很难相信... – 2010-03-19 22:06:41
谢谢你的回答。事实上,这是一个令人惊讶的结论:) – 2010-03-19 23:09:29
好奇,如果有一个标志,可以设置为使系统匹配数据,如在C/C + +中的O_BINARY标志。 – Dave 2010-03-20 00:55:43