Regex 查找具有同名方法的类
我试图在VisualStudio代码中查找其内容包含具有相同名称的方法的类的文件。例如,以下内容应匹配:Regex 查找具有同名方法的类,regex,visual-studio-code,Regex,Visual Studio Code,我试图在VisualStudio代码中查找其内容包含具有相同名称的方法的类的文件。例如,以下内容应匹配: class Hello { ... function Hello() { ... } ... } 在任何情况下,我都试图为这个类([A-Za-z!+)[^]*(function\s\1)生成我的正则表达式,它似乎工作得很好。当我尝试在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)
^ ^^ ^ ^^
详细信息
-文字子字符串类
-1个或多个空格\s+
-第1组:1个或多个字母或([A-Za-z]+)
-单词边界\b
-任何0个或更多字符尽可能少[\s\s\r]*?
-第2组:(函数\s+\1\b)
,1+空格,第1组值和单词边界fuinction
它的形状不好。将
[^]
替换为[\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一起工作。