正则表达式 $1, $2, 等等
我一直在尝试在PHP中做一些正则表达式操作,但我在这方面不是很熟练。似乎当我在字符串上使用像preg_replace这样的正则表达式函数时,我可以通过某种名为$1,$2等的变量访问正则表达式替换的字符串。这叫什么,我如何使用它?
我一直在尝试在PHP中做一些正则表达式操作,但我在这方面不是很熟练。似乎当我在字符串上使用像preg_replace这样的正则表达式函数时,我可以通过某种名为$1,$2等的变量访问正则表达式替换的字符串。这叫什么,我如何使用它?
这些在正则表达式术语中称为反向引用(此处有更多内容)。您可以使用它们来引用正则表达式或替换字符串中的捕获组(或子模式,由 ) 包围。()
例如:
/*
* 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, \2 == $1, $2