c# - 正则表达式中的子表达式

标签 c# regex winforms

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

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/

相关文章:

c# - 我能否简要了解 WPF 中窗口加载/初始化期间发生的情况?

sql - Oracle 在空格前获取子字符串

javascript - 正则表达式查找包含双星号包围的数字的所有内容

c# - 如何在另一个线程中调用方法?

c# - Windows 窗体 C# 面板不应有白色背景,并且面板应仅为图像

c# - 从部分 View 获取ApplicationUser

c# - MVC3 输入相关验证

c# - 单元格编辑后更改 DataGridView 中的数据源

python - 在 Python 中捕获正则表达式

c# - 切换到上一个事件的应用程序,例如 Alt-Tab