Php 正则表达式1美元、2美元等

Php 正则表达式1美元、2美元等,php,regex,variables,Php,Regex,Variables,我一直在尝试用PHP做一些正则表达式操作,但我在这方面不是很熟练。似乎当我在字符串上使用一个regex函数(如preg_replace)时,我可以通过一些名为$1、$2等的变量访问regex替换的字符串。这叫什么?我如何使用它?这些在正则表达式术语中称为反向引用(更多信息)。您可以使用它们来引用正则表达式或替换字符串中的捕获组(或子模式,由()包围) 例如: /* * Replaces abcd123 with 123abcd, or asdf789 with 789asdf. * *

我一直在尝试用PHP做一些正则表达式操作,但我在这方面不是很熟练。似乎当我在字符串上使用一个regex函数(如preg_replace)时,我可以通过一些名为$1、$2等的变量访问regex替换的字符串。这叫什么?我如何使用它?

这些在正则表达式术语中称为反向引用(更多信息)。您可以使用它们来引用正则表达式或替换字符串中的捕获组(或子模式,由
()
包围)

例如:

/* 
 * 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);

它们被称为反向引用,并匹配regexp中的分组元素

如果将regexp的某个部分用括号括起来,则可以在replace部分中引用它(或者稍后在同一个regexp中,通过与其位置相对应的backreference引用)

斜杠形式或美元形式可用于替换:

\1, \2 == $1, $2

这很有帮助!但我认为变量不会在单引号中展开,但在我测试它时它会工作。为什么呢?作为PCRE反向引用,它们碰巧由
$
表示,但与PHP变量无关。它们会被正则表达式引擎看到并替换,而不是PHP。好的,这很有意义。非常感谢!感谢您提供了rect“term;”我将来可能要查找这个词,这个词在所有编程语言和环境中都很有用:)这是一个完美的答案,很好的示例,在非常短的文本中很好地描述。