2

我正在尝试创建一个正则表达式,以帮助 Eclipse 的搜索找到包含start(注释行之外的所有行。

也就是说,找到如下行:

 is not sufficient because it doesn't guarantee that start(b) is 

不是这样的行:

 * is not sufficient because it doesn't guarantee that start(b) is

我已经能够想出正则表达式(\s*?)(?!\*)(.*)(start\()(.*$),但它找到了两条线。

如何排除以*(可能在一些空格之后)开头的行并包含没有该行的行?

4

3 回答 3

3

对于以空格开头的行,有可能\s*?匹配零个空格,然后(?!\*)匹配一个空格,而.*预告片匹配包括星号在内的行的其余部分。

一种解决方案是将前导空白序言放在否定子句中:

^(?!\s*\*).*start\(.*$

或者,您可以使用所有格量词来吃掉所有的空格并且从不回溯:

^\s*+(?!\*).*start\(.*$
于 2012-08-14T22:23:53.303 回答
1
^\s*+(?=[^\*]).*?start\(

^是行的开始

\s*+贪婪地消耗空白

(?=是一个前瞻 - 它匹配一个位置,但不匹配任何文本。这使您要搜索的内容成为在线上的第一件事。

[^\*]是不是 * 的任何字符

)结束前瞻

.*?懒惰匹配任何旧垃圾

start\(或者你想找到的任何其他东西

于 2012-08-14T22:55:22.187 回答
0

我会试试这个^\s*[^\*]+.*start\(.*$

于 2012-08-14T22:29:28.163 回答