如何为不以'/'开头并以','或'。'结尾的行设置正则表达式。还是'+'?

时间:2016-10-22 16:30:55

标签: regex delphi delphi-10.1-berlin

我有源代码,我希望找到所有行,而不是逗号,点或加符号',' , '.' , '+'

所以,我有这个:(\,|\.|\+)$ - 显示以这些符号结尾的行。

但是我想忽略以// - 评论的行开头的行,并且它们可以以任意数量的空格开头。

我尝试过忽略/开头的行:^[^/].* 但这并没有真正奏效。然后我也尝试将\s*放在开头,忽略所有空格,但仍然不能正常工作。

所以,我的正则表达式将是这样的:\s*^[^/].*(\,|\.|\+)$ - 跳过开头的所有空格并忽略带/作为第一个符号的那些并显示那些以。+

结尾的行。

但是仍然会找到以空格和/开头的行。我做错了什么?

修改 以下是示例行:

...
// increase no of objects...
counter := 1+
2;
...

我需要忽略注释行,从//开始,但需要所有以。,+结尾的行,因为我需要重新格式化它们。

2 个答案:

答案 0 :(得分:2)

使用单个正则表达式执行此操作的唯一方法是使用负面的lookbehind。但是,您最终会得到一个以^(?<!\s*\/)开头的正则表达式,由于外观中的量词而无效。

这意味着实际工作的唯一方法是使用多个正则表达式。

您想要的线条与此匹配(字面意思是&#34;线条末尾的逗号,点或加号&#34;)

[,.+]$

这个(字面意思是&#34;零行或多行空格后跟行开头的正斜杠&#34;):

^\s*\/

答案 1 :(得分:2)

也许它可行:

^(?!/|\s*/)+.*[\,\.\+]$

此正则表达式忽略所有以/开头或以/开头的零个或多个空格并以,.+结尾的行

我希望对你有用。

编辑:可以减少:

^(?!\s*/)+.*[\,\.\+]$

我测试了这个正则表达式,你怎么看,它忽略了行192并匹配210,但是它不会忽略块注释中的行,因为它不以{开头{1}}。

Test for regular expression