所以我正在尝试使用正则表达式来进行语法高亮以匹配字符串。我遇到的问题是,在编程编辑器中,当没有右双引号时,字符串仍然会突出显示。
我进行实际语法突出显示的方式是使用 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);
}
我开始认为,除非我能让正则表达式只匹配最后一场比赛,否则不能这样做。虽然可能与使用 " 或行尾有关?