作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想搜索代码中 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?\(.*;.*;.*\)
您看到“.*”表示:任意出现任何字符。加个“?”意思是:至少一次。 任何时候一次...正如所说:没有意义。
但除此之外:我只是建议分开你的两个案例。
除此之外:您当前的模式寻找
正如您可能已经注意到的那样 - 多行部分工作得很好。您当前的模式已经可以很好地匹配两行。但当然它可以不匹配你的第二个例子。因为你的第二个代表
为了解释这一点,让我们看一下:
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/
我是一名优秀的程序员,十分优秀!