我有以下用于语法高亮的正则表达式:
static Regex inQuotes = new Regex("(\"|\').*(\"|\')", RegexOptions.Compiled);
但是,有一个问题。无论何时,我都会遇到如下文字:
"text_example1'
或
'text_example2"
它实际上改变了文本的颜色,因为这两种情况被认为是匹配的。我想要做的是改变这个正则表达式,我可以用其他东西替换第二个(\"|\')
。
我正在考虑子表达式,我想知道如何更改它以便一旦我得到第一场比赛("
或'
),那么最后一场比赛必须与第一次匹配而不是"
或'
。
答案 0 :(得分:4)
(\"|\').*?(\1)
您可以在此处使用backreferencing
来达到您想要的效果。也可以从贪婪non greedy
制作表达式.*?
.*
。请参阅演示。
https://regex101.com/r/nM7nT5/3
string strRegex = @"(\""|\').*?(\1)";