【发布时间】:2014-07-25 22:43:56
【问题描述】:
这是我的代码。
static void Main(string[] args)
{
string pattern =
@"^(?<p1>.*?)(?<c0>\w+)(?<s1>.*?)$
^(?<p2>.*?)\k<c0>(?<s2>.*?)$
^\k<p1>(?<c1>\w+)\k<s1>$
^\k<p2>\k<c1>\k<s2>$";
string text =
@" if (forwardRadioButton.IsChecked.Value)
car = car.Forward(distance);
else if (backwardRadioButton.IsChecked.Value)
car = car.Backward(distance);
else if (forwardLeftRadioButton.IsChecked.Value)
car = car.ForwardLeft(distance);";
var mc = Regex.Matches(text, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
Console.WriteLine(mc.Count);
Console.ReadKey();
}
它找不到匹配项。
但如果我在 .NET 测试器中测试正则表达式和文本,它可以找到匹配项。
我是否遗漏了代码中的任何内容?如何使模式起作用?
【问题讨论】:
-
对 Regex 知之甚少,但我记得 SingleLine 和 MultiLine 选项非常不直观,并且在我曾经使用的至少一个测试程序中实现不一致。跨度>
-
我使用了来自 Ultrapico 的名为 Expresso 的测试程序并取得了一些成功。也有在线 Regex 测试页面,但通常不兼容 .Net。