Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在preg_replace()中使用捕获组_Php_Regex_Pcre - Fatal编程技术网

Php 在preg_replace()中使用捕获组

Php 在preg_replace()中使用捕获组,php,regex,pcre,Php,Regex,Pcre,我很难理解preg_替换。 这就是我目前所得到的。 preg_replace$patter、$replacement、$string 但是,当有捕获组替代时,我感到困惑。 但我还是得到了一些。如下 preg_替换“/\w+/”、“你好”、“说你好!” 我知道这会导致“你好!”。 我可以用抓捕小组做更多的事情。 preg_替换“/\w+/”、“\1你好”、“说世界!”,一, 这将导致“向世界问好” 这是我不明白的 <?php $string = 'April 15, 2003'; $patt

我很难理解preg_替换。 这就是我目前所得到的。 preg_replace$patter、$replacement、$string 但是,当有捕获组替代时,我感到困惑。 但我还是得到了一些。如下

preg_替换“/\w+/”、“你好”、“说你好!” 我知道这会导致“你好!”。 我可以用抓捕小组做更多的事情。 preg_替换“/\w+/”、“\1你好”、“说世界!”,一,

这将导致“向世界问好”

这是我不明白的

<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
Output:
April1,2003
${1}1$3是什么意思

使用$1\1和 这个${1}1是什么意思?

好问题

用于替换零件 我的猜测是$1${1}和$1${1}基本相同,只不过其中一个有一个额外的组

我认为我们正在使用${1}1,因为如果我们不这样做,我们会有$11,这并不简单,因为我们没有11个捕获组,我们只有其中的3个,类似于\11

${1}1,$3表示第一个捕获组,${1},数字1,第三个捕获组,$3

在正则表达式内部 当我们在正则表达式中使用\1或\2,而不是作为 替换,它将引用前面的捕获组$1和$2,这与替换部分中的\1和2相同,我也认为这可能会造成合理和有效的混淆

参考
因此,$1和\1是相同的。我们正在捕获第一个匹配的组?我很困惑?这是一个命名组。你能给我任何链接来澄清我对捕获组和命名捕获组的疑问吗?你的回答很有帮助。我非常感谢你的回答和支持,非常感谢。