如何在源代码中搜索"*“(乘法运算符)?
不是星号字符(在注释等中)。只是操作员*!
/** 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
}
发布于 2013-03-29 02:49:44
这是不可能的。Eclipse文件搜索不知道注释,因此您不能轻易排除注释中的结果。(语义) Java搜索不允许搜索运算符,只允许搜索类型、方法等(搜索对话框的一个弱点是允许搜索不是合法标识符的文本-它看起来像文本搜索,但其实不然)。
因此,您只能使用regex帮助自己进行文件搜索,它可能在大多数情况下都有效,但不会100%正确,并且根据源代码中注释和字符串文字的样式可能会失败。
编写一个正则表达式来搜索除"//“、"/”或("“位于行首或仅在空格之后)之外的所有*。特别是最后一种情况可能会有问题,这取决于你在哪里打断了很长的数学项。如果将运算符保留为前一行的最后一个符号,则没有问题;如果它是新行的第一个符号,则不会有问题。在这种情况下,根据搜索的紧急程度,您可能会考虑重新格式化搜索来源。在Eclipse中重新格式化所有内容都非常简单。
发布于 2013-03-29 04:24:03
这个正则表达式做到了这一点:
^(?!\s*(//|\*|/\*)).*\*
发布于 2013-03-29 04:30:08
您可以使用正则表达式搜索通过Eclipse进行搜索,我已经找到了要使用的正则表达式。您可以看到一个示例here。这个例子有一堆我用来测试正则表达式的不同类型的注释块。
(?mx)(?<![\/\*+\n])\*+(?![\n\*+\/])
它由3个部分组成:
/
后面跟着一个或多个*
,这表示注释的开始。\*+
,或者"one or more“/
.的注释块*
的末尾
开头的mx
告诉正则表达式遍历多行。因此,当它触发时,它将查找中间模式\*+
,该模式不以任何开始注释开头,也不以任何结束注释结束(不管使用了多少个*
)。
可以对此进行更改,以找到Java注释中未包含的任何模式,无论注释的“艺术”有多大或多么疯狂。通过使用(?mx)(?<![\/\*+\n])PATTERN_GOES_HERE(?![\n\*+\/])
并用模式替换PATTERN_GOES_HERE
来搜索未包含在注释中的内容。这将允许你插入任何你需要的疯狂模式,其中没有包含在评论中的重要部分由后面的负面外观/ahead处理。
https://stackoverflow.com/questions/15689352
复制相似问题