所以我正在尝试使用正则表达式来进行语法高亮以匹配字符串。我遇到的问题是,在编程编辑器中,当没有结束双引号时,字符串仍然会突出显示。
我正在进行实际语法高亮显示的方法是使用TextChange上的事件,删除可见文本上的所有高光,然后重新点亮。
基本上,我想要匹配以下内容:
等
我尝试了什么:
\“[^ \”] * \“ - 工作,但只会在您关闭”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);
}
我开始思考,除非我能让正则表达式只匹配最后一场比赛,否则不能这样做。虽然可能与使用“或者行尾”有关?
答案 0 :(得分:2)
如果\"[^\"]*\"
主要适用于您,请尝试\"[^\"]*(\"|$)
。理论上,这应该与两端的引号匹配,或由引号开始并以行尾结束的内容。