在Regex里面的Subexpression

时间:2015-05-25 08:52:33

标签: c# regex winforms

我有以下用于语法高亮的正则表达式:

static Regex inQuotes = new Regex("(\"|\').*(\"|\')", RegexOptions.Compiled);

但是,有一个问题。无论何时,我都会遇到如下文字:

"text_example1''text_example2"

它实际上改变了文本的颜色,因为这两种情况被认为是匹配的。我想要做的是改变这个正则表达式,我可以用其他东西替换第二个(\"|\')

我正在考虑子表达式,我想知道如何更改它以便一旦我得到第一场比赛("'),那么最后一场比赛必须与第一次匹配而不是"'

1 个答案:

答案 0 :(得分:4)

(\"|\').*?(\1)

您可以在此处使用backreferencing来达到您想要的效果。也可以从贪婪non greedy制作表达式.*? .*。请参阅演示。

https://regex101.com/r/nM7nT5/3

string strRegex = @"(\""|\').*?(\1)";