首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Eclipse:如何搜索字符串,而不是在注释中

Eclipse:如何搜索字符串,而不是在注释中
EN

Stack Overflow用户
提问于 2013-03-29 02:20:20
回答 3查看 2.7K关注 0票数 4

如何在源代码中搜索"*“(乘法运算符)?

不是星号字符(在注释等中)。只是操作员*!

代码语言:javascript
运行
复制
/** foo method */    // <- this should not be in search results 
public int foo(int i, int j)
{      
    /* compute the values */ // <- this should not be in search results 
    return i * j;            // <- this should be in search results 
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-29 02:49:44

这是不可能的。Eclipse文件搜索不知道注释,因此您不能轻易排除注释中的结果。(语义) Java搜索不允许搜索运算符,只允许搜索类型、方法等(搜索对话框的一个弱点是允许搜索不是合法标识符的文本-它看起来像文本搜索,但其实不然)。

因此,您只能使用regex帮助自己进行文件搜索,它可能在大多数情况下都有效,但不会100%正确,并且根据源代码中注释和字符串文字的样式可能会失败。

编写一个正则表达式来搜索除"//“、"/”或("“位于行首或仅在空格之后)之外的所有*。特别是最后一种情况可能会有问题,这取决于你在哪里打断了很长的数学项。如果将运算符保留为前一行的最后一个符号,则没有问题;如果它是新行的第一个符号,则不会有问题。在这种情况下,根据搜索的紧急程度,您可能会考虑重新格式化搜索来源。在Eclipse中重新格式化所有内容都非常简单。

票数 0
EN

Stack Overflow用户

发布于 2013-03-29 04:24:03

这个正则表达式做到了这一点:

代码语言:javascript
运行
复制
^(?!\s*(//|\*|/\*)).*\*
票数 1
EN

Stack Overflow用户

发布于 2013-03-29 04:30:08

您可以使用正则表达式搜索通过Eclipse进行搜索,我已经找到了要使用的正则表达式。您可以看到一个示例here。这个例子有一堆我用来测试正则表达式的不同类型的注释块。

(?mx)(?<![\/\*+\n])\*+(?![\n\*+\/])

它由3个部分组成:

  1. /后面跟着一个或多个*,这表示注释的开始。
  2. 我们要查找的实际匹配项\*+,或者"one or more“
    1. 向前看后面跟着/.

    的注释块*的末尾

开头的mx告诉正则表达式遍历多行。因此,当它触发时,它将查找中间模式\*+,该模式不以任何开始注释开头,也不以任何结束注释结束(不管使用了多少个*)。

可以对此进行更改,以找到Java注释中未包含的任何模式,无论注释的“艺术”有多大或多么疯狂。通过使用(?mx)(?<![\/\*+\n])PATTERN_GOES_HERE(?![\n\*+\/])并用模式替换PATTERN_GOES_HERE来搜索未包含在注释中的内容。这将允许你插入任何你需要的疯狂模式,其中没有包含在评论中的重要部分由后面的负面外观/ahead处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15689352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档