gpt4 book ai didi

java - 如何在Eclipse中进行多行搜索?

转载 作者:行者123 更新时间:2023-11-30 02:40:38 25 4
gpt4 key购买 nike

我想搜索代码中 for 循环条件内的所有 for 循环。我为此创建了 regex。

for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)

这适用于如下代码:

for(int i=0; i<StartTags.length; i++){
for(int j=0; j<StartTags.length; j++){

但不适用于

for(;;) 
{
somecode;
for(;;)
{
someOtherCode;
}
}

我应该在 regex 中添加什么才能使其正常工作?

我想放置一些正则表达式而不是“.*\s*”,这样它将搜索多行。

for?\(.*?;.*?;.*?\).*\s*for?\(.*?;.*?;.*?\)

最佳答案

首先,您可以将正则表达式简化为:

for?\(.*;.*;.*\).*\s*for?\(.*;.*;.*\)

您看到“.*”表示:任意出现任何字符。加个“?”意思是:至少一次。 任何时候一次...正如所说:没有意义。

但除此之外:我只是建议分开你的两个案例。

除此之外:您当前的模式寻找

  1. 用于构建
  2. 空格
  3. 用于构建

正如您可能已经注意到的那样 - 多行部分工作得很好。您当前的模式已经可以很好地匹配两行。但当然它可以匹配你的第二个例子。因为你的第二个代表

  1. 用于构造
  2. 空格
  3. 一些代码
  4. 空格
  5. 用于构建

为了解释这一点,让我们看一下:

for?\(.*;.*;.*\).*\s*.*\s*for?\(.*;.*;.*\)

换句话说:对于构造之间的每一行,您需要一个 .*\s*

所以,对我来说

for?\(.*;.*;.*\).*\s*.*\s*.*\s*for?\(.*;.*;.*\)

与您的两个 for 循环结构相匹配。

这里的问题:如果“somecode”是两行,您需要再次将另一个“line-content-matcher”条目放入正则表达式中。

我试过了

for?\(.*;.*;.*\)(.*\s*)*for?\(.*;.*;.*\)

但至少对我来说,这会导致 Eclipse 崩溃。

(这并不奇怪,因为 question 清楚地表明“计数”,又名“不定”结构不能与正则表达式一起使用)

关于java - 如何在Eclipse中进行多行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com