我一直在尝试在PHP中进行一些正则表达式操作,而且我在这方面不是很熟练。似乎当我在字符串上使用像preg_replace这样的正则表达式函数时,我可以通过某种名为$ 1,$ 2的变量来访问正则表达式替换的字符串,依此类推。这叫什么,我该如何使用它?
答案 0 :(得分:33)
这些在正则表达式术语中称为反向引用(更多关于here)。您可以使用它们来引用正则表达式或替换字符串中的捕获组(或子模式,由()
包围)。
一个例子:
/*
* Replaces abcd123 with 123abcd, or asdf789 with 789asdf.
*
* The $1 here refers to the capture group ([a-z]+),
* and the $2 refers to the capture group ([0-9]+).
*/
preg_replace('/([a-z]+)([0-9]+)/', '$2$1', $str);
答案 1 :(得分:6)
它们被称为反向引用并匹配正则表达式中的分组元素。
如果用括号括起正则表达式的一部分,那么你可以在替换部分中引用它(或者实际上在同一个正则表达式中,通过与其位置对应的反向引用。)
斜杠表格或美元表格可用于替换:
\1, \2 == $1, $2