使用名称相同的方法查找类

时间:2018-10-30 13:38:46

标签: regex visual-studio-code

我正在尝试在Visual Studio代码中查找文件,这些文件的内容包含具有相同名称的方法的类。例如,以下内容应匹配:

class Hello {
    ...
    function Hello() { ... }
    ...
}

无论如何,我都试图为此class\s([A-Za-z_]+)[^]*(function\s\1)做我的正则表达式,它似乎可以正常工作。当我尝试在Visual Studio代码中搜索文件时,它引发错误,指出:“不允许反向引用”。

在这里有想要我做的简单方法吗?我的正则表达式格式不好吗?

1 个答案:

答案 0 :(得分:1)

您应将[^]替换为[\s\S\r]

应该起作用的模式是

class\s([A-Za-z_]+)[\s\S\r]*(function\s\1)

或者,也许是更精确的版本:

class\s+([A-Za-z_]+)\b[\s\S\r]*?(function\s+\1\b)
       ^            ^^         ^              ^^

详细信息

  • class-文字子字符串
  • \s+-1个或多个空格
  • ([A-Za-z_]+)-第1组:1个或更多字母或_
  • \b-单词边界
  • [\s\S\r]*?-尽可能少包含0个或更多字符
  • (function\s+\1\b)-组2:fuinction,1个以上的空格,组1值和单词边界。

enter image description here

相关问题