PHP正则表达式如何反向引用?

<?php
$str = "201309/22/120711ndvh1pkk1mmevy18.jpg";
$mode = "/(\d+)\/(\d+)\/(\w+)\.(\w+)/i";
$replace = "\1";
echo preg_replace($mode,$replace,$str);
?>
正确是写法应该是?

你好你的写的正则是对的,可以匹配,就是你匹配后输出什么有问题,正确写法是这样的:

$replace = "\$1/$2";
加$1是第一个匹配的(\d+),就是说你匹配到了,你要输出什么,怎么输出写错了。
希望能帮助到你...追问

谢谢,可以一次匹配到所有的字符吗?按照你这些写法,需要$replace = "\$1/$2/$3.$4";才能把上面的字符匹配完成

追答

你要是一次性的话,正则就不能拿样写了,不知道你的目的是什么,图片地址你要匹配后做什么,可以(.*?)匹配全部,用替换或拼接处理,做成你要的效果,看看是否能满足你的要求

追问

比如这个有很多个数据abc efg 201309/22/120711ndvh1pkk1mmevy18.jpg ,然后我需要匹配出上面的图片路径,然后加上后缀"XXX"

追答

你图片路径上怎么会有那么多无用的字符,你拔别人的页面吗?就是说你只要图片的名字,你可以只匹配以.jpg或.png结尾的最后一个/开始中间的字母

追问

谢谢,我只是想找一个例子学一下反向引用

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-23
用于替换的字符串或字符串数组。如果这个参数是一个字符串,并且pattern 是一个数组,那么所有的模式都使用这个字符串进行替换。如果pattern和replacement 都是数组,每个pattern使用replacement中对应的 元素进行替换。如果replacement中的元素比pattern中的少, 多出来的pattern使用空字符串进行替换。

PHP正则表达式如何反向引用?
你好你的写的正则是对的,可以匹配,就是你匹配后输出什么有问题,正确写法是这样的:replace = "\\$1\/$2";加$1是第一个匹配的(\\d+),就是说你匹配到了,你要输出什么,怎么输出写错了。希望能帮助到你...

什么是正则表达式的反向引用?其作用是什么?
(abc)\\1 \\1就是反向引用,\\n指同一个正则表达式的第n个捕获 反向引用还在替换的时候有用,比方我要用第一个词替换整句话 this is a test replace("(\\w+).*", "\\1")

PHP 正则表达式\\\\1 \\\\2是什么意思
正则表达式中 '\\\\1' 匹配的是 字符 '\\1' 。 (因为 '\\\\' 匹配字符 '\\' )'\\\\2' 匹配的是 字符 '\\2'单独斜杠的 \\1 , \\2 就是反向引用了。'\\1' 匹配的是 所获取的第1个()匹配的引用。例如,'(\\d)\\1' 匹配两个连续数字字符。'\\2' 匹配的是 所获取的...

正则表达式\/^(\\d{4})(-|\\\/)(\\d{2})\\2(\\d{2})$\/表示的是时间的格式 我想...
也就是说在支持反向引用的语言中(比如 javascript语言),程序把正则表达式扫描完后,把每一个分组(用括号括起来的部分)都被保存到一个特殊的地方,如果有\\2类似的引用,就取出相应的分组的字符串,拷贝到\\2的位置。对于你的正则表达式\/^(\\d{4})(-|\\\/)(\\d{2})\\2(\\d{2})$\/就相当于正则表达式...

反向引用简介
反向引用的一种简单而高效的用途是找到文本中两个相邻且完全相同的单词的匹配项。以一句例句为例:"quick brown fox jumps over the lazy dog"。通过正则表达式,我们可以轻松识别出相同的单词。假设我们想要寻找所有重复的单词。可以使用反向引用来实现。例如,正则表达式 `(\\\\b\\\\w+\\\\b)\\\\s+\\\\1`...

perl 正则表达式反向引用\\g代表什么意思?
1.官网中的语法:\\g{name} Named backreference 表示后向匹配的意思 2.后向匹配,简单说就是:匹配,前面已经查找过的某段内容,该段内容,是已经被括号包起来的,叫做组group,组的名字叫做name 你这里就是 之前用 (?<last_name>\\S+)匹配到了 Flintstone 后面用 \\g{last_name} 去匹配,前面的...

正则表达式(\\w)((?=\\1\\1\\1)(\\1))+到底怎么理解...
(\\1)反向引用,表示接下来应该匹配到第一个捕获组中的内容 最后(?=\\1\\1\\1)(\\1)用括号()括起来并且跟上一个+号表示这种模式应该至少匹配一次,匹配得越多越好。例如有字符串aaaaab,匹配过程是:①指针从第1个字符开始匹配,\\w匹配到字符a,捕获组1的内容是a,指针移动到第2个字符位置 ②(?

PHP中${}什么意思,比如${1}
就是反向引用preg_replace()中参数的内容。{1}就是引用第一个参数中的内容,${2}也就是引用第二个参数中的内容。以此类推。preg_replace ( $pattern , $replacement , $subject)${1}的意思就是引用$pattern参数中的内容。如:preg_replace ('大好人' , '卧底:${1}','我是大好人')输出...

PHP从入门到精通—正则表达式—初识正则表达式、正则表达式语法规则、相 ...
反向引用允许匹配连续出现的字符串或字母,通过表达式的“记忆”功能实现,提高匹配效率。正则表达式相关函数 preg_match()函数 用于对指定字符串进行匹配,返回匹配结果或0(未匹配)。preg_match_all()函数 全局匹配功能,从头到尾搜索匹配结果,直至获取所有相匹配的内容。preg_replace()函数 实现字符串...

求大佬解释以下正则表达式
(1)可能是表示数字1也可能是前面加反斜杠的\\1,指代前面第一个括号内的x即(?:(x)|y)中的x,这叫做反向引用.这样,你说的正则表达式可能是r'(?:(x)|y)(?:(\\1)y|x)'(?: )表示匹配某一表达式,但不代表分组,不捕获匹配的内容 (x)表示第一捕获分组中,有一个字母x |表示或者的关系 (x)...

相似回答