正则表达式匹配“描述的字符串

时间:2013-07-12 13:41:34

标签: c# regex string

所以我正在尝试使用正则表达式来进行语法高亮以匹配字符串。我遇到的问题是,在编程编辑器中,当没有结束双引号时,字符串仍然会突出显示。

我正在进行实际语法高亮显示的方法是使用TextChange上的事件,删除可见文本上的所有高光,然后重新点亮。

基本上,我想要匹配以下内容:

  • “adfads”
  • “”
  • “asdfadf(在该行的末尾结束会很好)
  • 不匹配//“”,但我可能最终会在其他地方这样做。

我尝试了什么:

  • \“[^ \”] * \“ - 工作,但只会在您关闭”s

  • 时突出显示
  • \ “*?\” ?? - 只匹配“s,因为它匹配第一个匹配,这将是第一个匹配。”

  • \“。* \” - 与第一个问题相同但搜索不太具体。

就像我说的,我有一个相当简单的方法来做亮点 -

private void CodeEditor_TextChanged(object sender, TextChangedEventArgs e)
{
    CodeEditor.VisibleRange.ClearStyle(StringsStyle);
    CodeEditor.VisibleRange.SetStyle(StringsStyle, "<HERE IS MY REGEX>");
}

private void CodeEditor_VisibleRangeChanged(object sender, EventArgs e)
{
    CodeEditor_TextChanged(null, null);
}

我开始思考,除非我能让正则表达式只匹配最后一场比赛,否则不能这样做。虽然可能与使用“或者行尾”有关?

1 个答案:

答案 0 :(得分:2)

如果\"[^\"]*\" 主要适用于您,请尝试\"[^\"]*(\"|$)。理论上,这应该与两端的引号匹配,由引号开始并以行尾结束的内容。