正则表达式1美元,2美元等

时间:2010-12-26 16:19:53

标签: php regex variables

我一直在尝试在PHP中进行一些正则表达式操作,而且我在这方面不是很熟练。似乎当我在字符串上使用像preg_replace这样的正则表达式函数时,我可以通过某种名为$ 1,$ 2的变量来访问正则表达式替换的字符串,依此类推。这叫什么,我该如何使用它?

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