2

我的编辑器EditpadPro允许我创建语法着色方案。我正在编写的方案包括从“--”到行尾的注释。

我想要一个从“--”开始但在最后一个非空白字符处停止的正则表达式。我不能使用“替换”,因为我只是输入正则表达式,而不是自己使用它。

因此,如果我的代码行中的文本是:

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

然后正则表达式将返回:

-- This is a comment with trailing blanks

这样做的原因是我可以将尾随空格突出显示为浪费空间。

4

2 回答 2

2

我不熟悉 EditPad Pro,但是

--(?:.*\S)?

可能会奏效。

这个想法是匹配--,后跟 0 个或多个任意(非换行符)字符 ( .),后跟一个非空格字符 ( \S)。因为“0 或更多”部分是贪婪的,它会尝试匹配尽可能多的行,从而\S匹配行的最后一个非空白字符。

?使得整个事情成为--可选的。这是因为您的注释中可能没有非空格字符:

--

这仍应作为注释匹配,但不能匹配任何尾随空格(如果有)。

于 2018-04-07T13:58:07.000 回答
0

在 Syntax Coloring Scheme Editor 中,使用以下正则表达式,确保未选中“Dot all”复选框:

--.*?(?=[^\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,但否定字符类允许您从允许的空白字符类中排除某些字符 - 在本例中为换行符。

于 2018-04-07T14:04:57.083 回答