Regex fnr.exe正则表达式捕获组输出

Regex fnr.exe正则表达式捕获组输出,regex,Regex,我正在使用fnr.exe的批处理脚本对多个文件执行批量搜索和替换操作,但我在弄清楚如何在fnr.exe中使用捕获组时遇到了问题。我可以在一个类似的名为FAR的实用程序中很好地使用它们,该实用程序使用java正则表达式,但FAR不能从命令行运行,因此我无法将其自动化。Fnr.exe在它的文档中说它使用.NET正则表达式,.NET正则表达式的文档在如何捕获组时非常好,但在输出捕获的组时,它相当缺乏,并且假设我正在编写C#或VB代码,我可以在其中调用以下内容: Console.WriteLine("M

我正在使用fnr.exe的批处理脚本对多个文件执行批量搜索和替换操作,但我在弄清楚如何在fnr.exe中使用捕获组时遇到了问题。我可以在一个类似的名为FAR的实用程序中很好地使用它们,该实用程序使用java正则表达式,但FAR不能从命令行运行,因此我无法将其自动化。Fnr.exe在它的文档中说它使用.NET正则表达式,.NET正则表达式的文档在如何捕获组时非常好,但在输出捕获的组时,它相当缺乏,并且假设我正在编写C#或VB代码,我可以在其中调用以下内容:

Console.WriteLine("Match: {0}", match.Value)
我有一组字符串,如下所示,左侧是原始字符串,右侧是所需的替换字符串:

include "fooPrintDriver.h";    |    include "barPrintDriver.h";
include "fooSearchAgent.h";    |    include "barSearchAgent.h";
include "fooEventListener.h";    |    include "barEventListener.h";
在很远的地方,我可以找到左边的字符串

foo(.*?)\.h"
然后使用

bar\1.h"
其中“\1”将是PrintDriver、SearchAgent或EventListener,但是当我在fnr.exe中尝试相同的操作时,“\1”字面上是“\1”,因此我的输入和输出将是:

include "fooPrintDriver.h";    |    include "bar\1.h";
include "fooSearchAgent.h";    |    include "bar\1.h";
include "fooEventListener.h";    |    include "bar\1.h";

有人知道如何让它在fnr.exe中工作吗?

我知道了。我需要使用以下工具:

bar$1.h"

很高兴看到你明白了。然而,尝试过之后,最初失败了,用括号将其分组是很重要的。例如,如果您使用\w查找foo之后的字母(这是一种比您使用的更可靠的方法),则使用$1会将这些字母替换为文字$1。您需要使用(\w)。然后,1美元将正确替换