我有以下用于语法高亮显示的正则表达式:
static Regex inQuotes = new Regex("(\"|\').*(\"|\')", RegexOptions.Compiled);
但是,有一个问题。每当我遇到这样的文字时:
“text_example1”
或
'text_example2"
它实际上改变了文本的颜色,因为这两种情况被认为是匹配的。我想要做的是以某种方式更改此 Regex,以便我可以将第二个 (\"|\')
替换为其他内容。
我在考虑子表达式,我想知道如何更改它以便一旦我获得第一个匹配项("
或 '
),然后是最后一个匹配项必须与第一个匹配项相同,而不是 "
或 '
。
最佳答案
(\"|\').*?(\1)
你可以在这里使用backreferencing
来实现你想要的。同时让你的表达式non greedy
.*?
from greedy 。 *
。查看演示。
https://regex101.com/r/nM7nT5/3
string strRegex = @"(\""|\').*?(\1)";
关于c# - 正则表达式中的子表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434454/