如何在WebStorm/PhpStorm中使用正则表达式进行替换

27

我想替换

#{account_nbr}
{{account_nbr}}

在查找中,我尝试了这个:

\#\{()\w+\1\}

而在替换中,变成了这样:

{{\$1}}

看起来查找功能是正常的,但我无法正确获取反向引用。

问题出在哪里?

1个回答

43

你不需要按照你现在使用的方式使用任何反向引用。

以下是你可以使用的正则表达式:

\#\{(\w+)\}

替换应该是

{{$1}}

当你使用\$时,实际使用的是字面上的$而不是实际的反向引用。

正则表达式演示


请明确,返回引用仅用于存储要替换的单词。您的正则表达式工作得很好 =) - funivan
太好了。感谢您的快速回答!这是否意味着反向引用是括号内的所有内容? - ndemoreau
3
未经转义的括号内的内容称为“捕获组”(http://www.regular-expressions.info/brackets.html)。当我们在正则表达式本身中使用`\1`,或在替换字符串中使用`$1`时,它是一个“反向引用”(http://www.regular-expressions.info/refreplacebackref.html)。 - Wiktor Stribiżew
你甚至可以为匹配的引用命名。使用\#\{(?<value>\w+)\}来调用该引用,并在替换中使用{{\g<value>}}进行回调。 - Wollhaar
但是在PHPStorm中,这样做不起作用。相反,应该使用这个正则表达式语法:匹配情况:\#\{(?<value>\w+)\}替换时要回调{{${value}}} - Wollhaar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接