如何为不以“/”开头但以“,”或“.”结尾的行设置正则表达式还是“+”?

How to set regex for lines that don't start with '/' and end with ',' or '.' or '+'?

我有源代码,我想查找所有以逗号、点或加号结尾的行 ',' , '.' , '+'

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

但我想忽略以 // 开头的行 - 注释行,它们前面可以有任意数量的 space。

我试过忽略以 / 开头的行:^[^/].* 但这并不能很好地工作。然后我也尝试把: \s* 放在开头忽略所有 spaces,但仍然效果不佳。

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

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

编辑: 以下是示例行:

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

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

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

这意味着唯一有效的方法是使用多个正则表达式。

你想要的行将匹配这个(字面意思是 "a comma, a dot or a plus sign at the end of the line"):

[,.+]$

不是这个(字面意思是"zero or more spaces followed by a forward slash at the beginning of the line"):

^\s*\/

也许可行:

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

此正则表达式忽略所有以 / 开头或零个或多个空格后跟 / 并以 ,. 或 [=15] 结尾的行=].

希望对你有用。

编辑:可以减少:

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

我测试了这个正则表达式,你怎么看,它忽略行 192 并匹配 210,但它不会忽略块注释内的行,因为它没有开始/.