我想用下面的模式匹配正则表达式的字符串。使用正则表达式来匹配带引号的字符串与嵌入的非转义引号
string text = "'Emma','The Last Leaf','Gulliver's travels'";
string pattern = @"'(.*?)',?";
foreach (Match match in Regex.Matches(text,pattern,RegexOptions.IgnoreCase))
{
Console.WriteLine(match + " " + match.Index);
Console.WriteLine(match.Groups[1].Captures[0]);
}
这符合“爱玛”和“最后一片叶子”正确,但第三场比赛是“格列佛”。但希望的搭配是“格列佛游记”。我怎样才能为这样的模式建立一个正则表达式?
如果添加逗号你的输入更语言学问题:) – madhead
字符串,你可以去掉',?'中的'?',这会导致错误的匹配。有没有办法可以得到正确的转义输入字符串?如果这本书实际上被命名为“Gulliver'的旅行”,你会怎么做? – bzlm
您可以使用平衡分组处理嵌套字符(http://blogs.msdn.com/b/bclteam/archive/2005/03/15/396452.aspx)。但是,嵌套字符并不是你的问题中最糟糕的。真正的问题是'格列佛'中的撇号不会逃脱。这确实使解析器的规则很难定义。 –