我的编辑器EditpadPro
允许我创建语法着色方案。
我写的方案包括的注释跨越" - " 到一行。
我喜欢一个正则表达式,它从" - " 开始,但在最后一个非空白字符处停止。我不能用#34;替换"因为我刚进入正则表达式,而不是自己使用它。
所以,如果我的代码行中的文字是:
X=1 -- This is a comment with trailing blanks
然后正则表达式将返回:
-- This is a comment with trailing blanks
原因是我可以将尾随空格突出显示为废物空间。
答案 0 :(得分:2)
我不熟悉EditPad Pro,但是
--(?:.*\S)?
可能有用。
这个想法是匹配--
,然后是0或更多任何(非换行)字符(.
),后跟非空格字符(\S
)。因为“0或更多”部分是贪婪的,所以它会尝试匹配尽可能多的行,从而使\S
匹配该行的最后一个非空白字符。
?
在--
可选后完成整个事情。这是因为您可能没有非空格字符的注释:
--
这仍然应该作为注释匹配,但不能与任何尾随空格(如果有)匹配。
答案 1 :(得分:0)
在语法着色方案编辑器中,使用以下正则表达式,确保未选中“全部点”复选框:
--.*?(?=[^\r\n\S]*$)
<强>解释强>
-- # Match --
.*? # Match any number of non-linebreak characters, as few as possible,
(?= # until the following can be matched from the current position:
[^\r\n\S]* # Any number of whitespace characters except newlines
$ # followed by the end of the line.
) # End of lookahead
[^\S]
与\s
相同,但是否定的character class允许您从允许的空白字符类中排除某些字符 - 在本例中为换行符。