我有一个很大的正则表达式,我用它来解析我自己的类似于lua的文件格式。这工作正常,除了不管怎样,引号内的数字得到匹配两次,即使拆分不应该返回重叠的结果。我简化了它到这个控制台应用程序。有任何想法吗?Regex.Split如何给我重叠匹配?
static void Main(string[] args)
{
string pattern = "(\r\n)|(\"(.*)\")"; // Splits at \r\n and anything in "quotes"
string input = "\"01\"\r\n" + // "01"
"\"02\"\r\n" + // "02"
"\"03\"\r\n"; // "03"
string[] results = Regex.Split(input, pattern);
foreach (string result in results)
{
//This just filters out the split \r\n and empty strings in results
if (string.IsNullOrWhiteSpace(result) == false)
Console.WriteLine(result);
}
Console.ReadLine();
}
返回:
"01"
01
"02"
02
"03"
03
我不知道Regex.Split应该匹配定界符,但即使如此,为什么括号影响比赛?他们不是只用于分组吗? – Miguel 2010-12-18 04:41:03
@Miguel:我建议你阅读文档。我提供了一个链接,但时间并不长。 – 2010-12-18 04:44:04
本的权利,这不是'Split'的工作。 – 2010-12-18 04:58:09