如何在 Eclipse 中执行多行搜索?
How to perform multi line search in Eclipse?
我想在我的 code.I 中的 for 循环条件内搜索所有 for 循环,为此创建了正则表达式。
for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)
这适用于像这样的代码:
for(int i=0; i<StartTags.length; i++){
for(int j=0; j<StartTags.length; j++){
但不适用于
for(;;)
{
somecode;
for(;;)
{
someOtherCode;
}
}
我应该在正则表达式中添加什么才能使其正常工作?
我想用一些正则表达式代替“.*\s*
”,这样它会搜索多行。
for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)
首先,您可以将正则表达式简化为:
for?\(.*;.*;.*\).*\s*for?\(.*;.*;.*\)
您看到“.*”表示:任何 出现任何字符。添加一个“?”意思是:至少一次。 任何时候一次...正如所说:没有意义。
但除此之外:我只是建议分开你的两个案例。
除此之外:您当前的模式寻找
- 构建
- 空格
- 构建
正如您自己可能已经注意到的那样 - multiline 部分可以正常工作。您当前的模式已经很好地匹配了两行。但是当然它可以不匹配你的第二个例子。因为你的第二个代表
- 构建
- 空格
- 一些代码
- 空格
- 构建
为了说明这一点,让我们看看这个:
for?\(.*;.*;.*\).*\s*.*\s*for?\(.*;.*;.*\)
换句话说:对于构造之间的 each 行,您需要 one .*\s*
所以,对我来说
for?\(.*;.*;.*\).*\s*.*\s*.*\s*for?\(.*;.*;.*\)
匹配你的两个 for 循环结构。
这里的问题:如果 "somecode" 是两行,您需要再次 将另一个 "line-content-matcher" 条目放入正则表达式。
我试过了
for?\(.*;.*;.*\)(.*\s*)*for?\(.*;.*;.*\)
但至少对我来说,这会导致 eclipse 崩溃。
(这并不奇怪,因为这个 question 清楚地表明 "counting",又名 "indefinite" 结构不能与正则表达式一起使用)
我想在我的 code.I 中的 for 循环条件内搜索所有 for 循环,为此创建了正则表达式。
for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)
这适用于像这样的代码:
for(int i=0; i<StartTags.length; i++){
for(int j=0; j<StartTags.length; j++){
但不适用于
for(;;)
{
somecode;
for(;;)
{
someOtherCode;
}
}
我应该在正则表达式中添加什么才能使其正常工作?
我想用一些正则表达式代替“.*\s*
”,这样它会搜索多行。
for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)
首先,您可以将正则表达式简化为:
for?\(.*;.*;.*\).*\s*for?\(.*;.*;.*\)
您看到“.*”表示:任何 出现任何字符。添加一个“?”意思是:至少一次。 任何时候一次...正如所说:没有意义。
但除此之外:我只是建议分开你的两个案例。
除此之外:您当前的模式寻找
- 构建
- 空格
- 构建
正如您自己可能已经注意到的那样 - multiline 部分可以正常工作。您当前的模式已经很好地匹配了两行。但是当然它可以不匹配你的第二个例子。因为你的第二个代表
- 构建
- 空格
- 一些代码
- 空格
- 构建
为了说明这一点,让我们看看这个:
for?\(.*;.*;.*\).*\s*.*\s*for?\(.*;.*;.*\)
换句话说:对于构造之间的 each 行,您需要 one .*\s*
所以,对我来说
for?\(.*;.*;.*\).*\s*.*\s*.*\s*for?\(.*;.*;.*\)
匹配你的两个 for 循环结构。
这里的问题:如果 "somecode" 是两行,您需要再次 将另一个 "line-content-matcher" 条目放入正则表达式。
我试过了
for?\(.*;.*;.*\)(.*\s*)*for?\(.*;.*;.*\)
但至少对我来说,这会导致 eclipse 崩溃。
(这并不奇怪,因为这个 question 清楚地表明 "counting",又名 "indefinite" 结构不能与正则表达式一起使用)