我想用下面的模式匹配正則表達式的字符串。使用正則表達式來匹配帶引號的字符串與嵌入的非轉義引號
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)。但是,嵌套字符並不是你的問題中最糟糕的。真正的問題是'格列佛'中的撇號不會逃脫。這確實使解析器的規則很難定義。 –