【问题标题】:Subexpression inside Regex正则表达式中的子表达式
【发布时间】:2015-05-25 08:52:32
【问题描述】:

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

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

但是,有一个问题。每当我遇到这样的文字:

"text_example1''text_example2"

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

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

【问题讨论】:

  • 引用的字符串中是否有任何转义实体?

标签: c# regex winforms


【解决方案1】:
(\"|\').*?(\1)

你可以在这里使用backreferencing来实现你想要的。也可以让你的表情non greedy.*?来自贪婪.*。查看演示。

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

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

【讨论】:

  • 我不得不写\\1,因为我收到了Error Unrecognized escape sequence。除此之外,它似乎是完美的。谢谢!
  • @OC_ 如果您不使用@ 或逐字模式,它将是\\1
  • @vks: string strRegex = @"([""']).*?(\1)";
  • @stribizhev yup dat 也可以:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
相关资源
最近更新 更多