如何使用引用grep查找Java方法调用的所有实例?

如何使用引用grep查找Java方法调用的所有实例?,grep,Grep,我正在尝试下面的查询,但没有成功 grep -nr "[[:alnum:]]+\.[[:alnum:]]+\(\)" . 因此,根据我的逻辑,方法调用应该是一个或多个字母数字字符 [[:alnum:]]+ [[:alnum:]]+ 后跟一个点 \. 后跟一个或多个字母数字字符 [[:alnum:]]+ [[:alnum:]]+ 后接附加说明(仅适用于无效返回类型) 但这个查询不起作用。如何编写这样的查询 您需要使用“\+”而不是“+”,否则

我正在尝试下面的查询,但没有成功

    grep -nr "[[:alnum:]]+\.[[:alnum:]]+\(\)" .
因此,根据我的逻辑,方法调用应该是一个或多个字母数字字符

   [[:alnum:]]+
    [[:alnum:]]+
后跟一个点

   \. 
后跟一个或多个字母数字字符

   [[:alnum:]]+
    [[:alnum:]]+
后接附加说明(仅适用于无效返回类型)


但这个查询不起作用。如何编写这样的查询

您需要使用“\+”而不是“+”,否则它将直接匹配字符“+”

grep
提供几种类型的正则表达式语法。
您的模式是用扩展语法编写的,并与
-E

extendedregexp
具有更简单/更好的语法,
perlregexp
非常强大

  • -E、 --扩展regexp
  • -F、 --固定字符串
  • -G、 --基本regexp(默认值)
  • -P、 --perl regexp


如果调用方法是同一类的一部分,则方法调用可能没有点
。@anubhava是的,您是对的。我目前对那些使用引用调用的实例感兴趣。我已经修改了题目,谢谢。为什么我不需要使用反斜杠*,而需要使用反斜杠+?只是一个猜测:*比\+更基本,因为前者可以更容易地实现后者(关于正则表达式的理论论文都使用*)。符号*将从版本一开始在grep中使用,但\+可能是为了方便起见在以后的grep版本中添加的。它将被转义,以便不破坏已经使用+作为文本匹配的现有regexp。