0

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

我进行实际语法突出显示的方式是使用 TextChange 上的一个事件,删除可见文本上的所有突出显示,然后重新突出显示。

所以本质上,我想匹配以下内容:

  • “广告”
  • “”
  • “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);
}

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

4

1 回答 1

2

在我的脑海中,如果\"[^\"]*\" 主要适用于您,请尝试\"[^\"]*(\"|$)。理论上,这应该匹配两端带有引号的内容,或者以引号开头并以行尾结尾的内容。

于 2013-07-12T13:48:52.863 回答