我知道很多人会问这些问题是如何完成的,但我不明白使用答案的背景,所以...
我正在为Python语言的颠覆构建一个代码编辑器,我找到了一种非常好的方法,可以通过以下方式突出显示RichTextBox中的关键字:
bluwords.Add(KEYWORDS GO HERE)
If scriptt.Text.Length > 0 Then
Dim selectStart2 As Integer = scriptt.SelectionStart
scriptt.Select(0, scriptt.Text.Length)
scriptt.SelectionColor = Color.Black
scriptt.DeselectAll()
For Each oneWord As String In bluwords
Dim pos As Integer = 0
Do While scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos) >= 0
pos = scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos)
scriptt.Select(pos, oneWord.Length)
scriptt.SelectionColor = Color.Blue
pos += 1
Loop
Next
scriptt.SelectionStart = selectStart2
End If
(scriptt是richtextbox) 但是当输入任何适当数量的代码(或通过OpenFileDialog加载)时,代码块就会丢失,语法选择就会崩溃,而且它只会破坏它。 我正在寻找一种更有效的方法,也许更像是视觉工作室本身...因为没有必要突出显示所有文本,将其设置为黑色,然后重做所有语法,文本开始结束 - 如果你回去在文本之间插入字符。 此外,在此版本的Python中,hash(#)用于仅注释行的注释,而double hash(##)用于同一行的注释。 现在我看到有人问过这个问题,选择到行尾的工作答案是:^ \'[^ \ r \ n] + $ |''[^ \ r \ n] + $ 我似乎无法付诸实践。 我还想在引号之间选择文字并将其变为绿松石,例如在第一个引号和第二个引号之间,文本是绿松石,第三个和第四个之间相同......
感谢任何帮助!
答案 0 :(得分:0)
Visual Studio使用基于语言语法的完整解析器;使用一些简单的正则表达式永远不会给你相同的结果。
你看过SyntaxHighlighter吗?
(另见:Syntax Highlighting)