使用正则表达式修剪尾随空格

时间:2018-04-07 12:58:10

标签: regex editpad

我的编辑器EditpadPro允许我创建语法着色方案。 我写的方案包括的注释跨越" - " 到一行。

我喜欢一个正则表达式,它从" - " 开始,但在最后一个非空白字符处停止。我不能用#34;替换"因为我刚进入正则表达式,而不是自己使用它。

所以,如果我的代码行中的文字是:

X=1 -- This is a comment with trailing blanks

然后正则表达式将返回:

-- This is a comment with trailing blanks

原因是我可以将尾随空格突出显示为废物空间。

2 个答案:

答案 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允许您从允许的空白字符类中排除某些字符 - 在本例中为换行符。