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

Wal*_*han 19 php regex variables

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

Bol*_*ock 34

这些在正则表达式术语中称为反向引用(此处更多内容).您可以使用它们来引用()正则表达式或替换字符串中的捕获组(或子图案,包围).

一个例子:

/* 
 * 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);
Run Code Online (Sandbox Code Playgroud)

  • 作为PCRE的反向引用,它们恰好用`$`表示,但与PHP变量无关.它们被正则表达式引擎所取代,而不是PHP. (2认同)

Orb*_*ing 6

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

如果用括号括起正则表达式的一部分,那么你可以在替换部分中引用它(或者实际上在同一正则表达式的后面,通过与其位置对应的反向引用).

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

\1, \2 == $1, $2
Run Code Online (Sandbox Code Playgroud)