我在 vb.net 中有一个语法高亮功能。例如,我使用正则表达式来匹配“!IF”,然后将其着色为蓝色。在我尝试弄清楚如何进行评论之前,这一切都很完美。
我为评论编写的语言可以是如果该行以单引号 ' 开头,或者如果该行中的任何位置有两个单引号
'this line is a comment
!if StackOverflow = "AWESOME" ''this is also a comment
现在我知道如何查看它是否以单行 ^' 开头,但我需要将字符串一直返回到行尾,以便我可以将整个注释着色为绿色,而不仅仅是单引号。
您不需要该代码,但这里有一个片段,以防万一它有帮助。
For Each pass In frmColors.lbRegExps.Items
RegExp = System.Text.RegularExpressions.Regex.Matches(LCase(rtbMain.Text), LCase(pass))
For Each RegExpMatch In RegExp
rtbMain.Select(RegExpMatch.Index, RegExpMatch.Length)
rtbMain.SelectionColor = ColorTranslator.FromHtml(frmColors.lbHexColors.Items(PassNumber))
Next
PassNumber += 1
Next
大致如下:
^(\'[^\r\n]+)$|(''[^\r\n]+)$
应该给你第 n° 1 组中的注释行(部分行)
其实根本不需要组
^\'[^\r\n]+$|''[^\r\n]+$
如果它发现了什么,那就是一条评论。
"(^'|'').*$"
如果仅逐行应用(这可能是您的情况),波阿斯提到的将起作用。
对于多行检测,必须确保避免使用“Dotall”模式,其中“.”也代表 \r 和 \n 字符。否则该模式将完全匹配您的两条线。
这就是为什么我一般更喜欢[^\r\n]
到“.”:它避免了对模式模式的任何依赖。即使在“Dotall”模式下,它仍然有效并避免在下一行尝试任何匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)