我正在尝试创建一个正则表达式,帮助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\()(.*$)
,但它找到两个行。
如何排除以*
开头的行(可能在某些空白之后)并包含没有该行的行?
答案 0 :(得分:3)
对于以空格开头的行,\s*?
可能匹配零空格,然后(?!\*)
匹配空格,.*
预告片匹配其余空格该行包括星号。
解决方案是将前导空白前导放在否定子句中:
^(?!\s*\*).*start\(.*$
或者你可以使用占有量词来吃掉所有空格并且永远不会回溯:
^\s*+(?!\*).*start\(.*$
答案 1 :(得分:1)
^\s*+(?=[^\*]).*?start\(
^
是该行的开头
\s*+
对于消耗空白非常贪心
(?=
是一个前瞻 - 它匹配一个位置,但不匹配任何文本。这让你正在寻找的东西成为第一件事。
[^\*]
是任何不是*
)
结束前瞻
.*?
懒惰匹配任何旧垃圾
start\(
或您想要找到的任何其他内容
答案 2 :(得分:0)
我会尝试这个^\s*[^\*]+.*start\(.*$