替代基础知识
使用正则表达式替换文本的最常用和最有用的方法之一是使用捕获组 。
甚至是命名捕获组 ,作为存储或替换数据的参考。
在正则表达式的文档中有两个非常相似的术语,因此从不混淆替换 (即 $1
)和 反向引用 (即\1
) 可能很重要。替换条款用于替换文本; 反向引用,在纯正的 Regex 表达式中。尽管一些编程语言同时接受替换,但这并不令人鼓舞。
让我们说我们有这个正则表达式:/hello(\s+)world/i
。每当引用 $number
时(在这种情况下,$1
),将替换\s+
匹配的空格。
正则表达式将会暴露出相同的结果:/hello(?<spaces>\s+)world/i
。由于我们在这里有一个命名组,我们也可以使用 ${spaces}
。
在同一个例子中,我们也可以使用 $0
或 $&
( 注意: $&
可以用作 $+
,意思是在其他正则表达式引擎中检索最后的捕获组),这取决于你正在使用的正则表达式,获得完整匹配的文字。 (即 $&
将返回 hEllo woRld
作为字符串:hEllo woRld of Regex!
)
通过使用 $number
和 ${name}
语法,使用 John Lennon 的改编引用来查看这个简单的替换示例:
简单捕获组示例: