Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 查找具有同名方法的类_Regex_Visual Studio Code - Fatal编程技术网

Regex 查找具有同名方法的类

Regex 查找具有同名方法的类,regex,visual-studio-code,Regex,Visual Studio Code,我试图在VisualStudio代码中查找其内容包含具有相同名称的方法的类的文件。例如,以下内容应匹配: class Hello { ... function Hello() { ... } ... } 在任何情况下,我都试图为这个类([A-Za-z!+)[^]*(function\s\1)生成我的正则表达式,它似乎工作得很好。当我尝试在VisualStudio代码中搜索文件时,它会抛出一个错误:“不允许反向引用” 有没有一个简单的方法来做我想做的事?我的正则表达式格式

我试图在VisualStudio代码中查找其内容包含具有相同名称的方法的类的文件。例如,以下内容应匹配:

class Hello {
    ...
    function Hello() { ... }
    ...
}
在任何情况下,我都试图为这个
类([A-Za-z!+)[^]*(function\s\1)
生成我的正则表达式,它似乎工作得很好。当我尝试在VisualStudio代码中搜索文件时,它会抛出一个错误:“不允许反向引用”


有没有一个简单的方法来做我想做的事?我的正则表达式格式是否错误?

您应该将
[^]
替换为
[\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)
       ^            ^^         ^              ^^
详细信息

  • -文字子字符串
  • \s+
    -1个或多个空格
  • ([A-Za-z]+)
    -第1组:1个或多个字母或
  • \b
    -单词边界
  • [\s\s\r]*?
    -任何0个或更多字符尽可能少
  • (函数\s+\1\b)
    -第2组:
    fuinction
    ,1+空格,第1组值和单词边界

它的形状不好。将
[^]
替换为
[\s\r]
class\s([A-Za-z\u]+)[\s\s\r]*(函数\s\1)
符合您的需要吗?我试过
class\s([A-Za-z\u]+)[\s\s\r]*(函数\s\r)
但它在visual Studio上不起作用是visual Studio还是VSCode?我刚刚尝试了
class\s+([A-Za-z]+)[\s\s\r]*(函数\s\1\b)
,它在Visual Studio s&r中运行得非常好。这是Visual Studio代码,看起来很不错。在任何情况下,如果您尝试搜索包含该内容的文件,它是否有效?因为我在“搜索文件”上下文中使用正则表达式(我不想在特定文件中查找),而正则表达式与任何文件都不匹配。仅供参考,我有很多这样的文件,所以至少应该有350个match@TomásJuárez“在文件中查找”正则表达式引擎使用不支持反向引用的Rust正则表达式引擎。我认为您不能在Find-in文件中使用正则表达式。注意,您可以在记事本++中使用相同的功能(它还有“在文件中查找”对话框)。我尝试使用VSCode和Atom,但两者都不起作用。只有一个文本编辑器可以通过这种方式为我找到文件,那就是SublimiteText 3。你的正则表达式很有魅力。非常感谢你的帮助@TomásJuárez很棒,是的,Suiblime Text 3是PCRE驱动的,它可以与lookarounds和BackReference一起工作。