【PHP学习之深入理解正则反引用和转义符】教程文章相关的互联网学习教程文章

PHP正则表达式的逆向引用与子模式 php preg_replace应用

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])功能在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。replacement可以包含\\n形式或$n形式的逆向引用,n可以为0到99,\\n表示匹配pattern第n个子模式的文本,\\0表示匹配整个pattern的文本。子模式$pattern参数中被圆括号括...

Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用【代码】

Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用//准备: 我们先写一个搜索所有英文单词的表达式var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := ‘one two three four five six seven eight nine ten‘; reg.RegEx := ‘\b[A-Za-z]+\b‘; //这个表达式就可以找到所有的英文单词 reg.Replacement := ‘◆‘; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆ ◆...

正则表达式入门(四)选择,分组和向后引用【代码】【图】

分组就是对文本加括号以帮助执行某种操作,比如:在两种或更多可选模式中选择一个创建子模式捕获一个分组后以便之后向后引用对组合的模式使用某项操作(如量词)使用非捕获分组原子分组选择操作选择操作可在多个可选模式中匹配一个。例如,你想在"The rime of the Ancyent Mariner"中找出the出现过多少次,包括THE,The和the的形式。若在RegExr上方文本框输入(THE|The|the)则看到所有the都被标亮。可以使用选项来使分组更简短。例如...

【正则表达式】——07回溯引用【代码】【图】

回溯引用回溯引用是指模式的后半部分引用前半部分中定义的子表达式 举例:匹配html标签开始和结束,需要忽略不配对的标签组合——其中:([1-6])是第一个子表达式;\1匹配第一个子表达式,即([1-6])注意:不同的正则表达式对于回溯引用的语法有差异回溯引用只能引用模式里面的子表达式,即用()括起来的表达式桥段回溯引用匹配通常从1开始计数,在许多实现里面\0代表着整个正则表达式如果正则表达式的相对位置发生变化整个模式也许就...

PHP学习之深入理解正则反引用和转义符

本篇文章主要讲述的是正则表达式的反引用和转义符的原理以及应用,具有一定的参考价值,感兴趣的朋友可以了解一下。一、正则反引用正则表达式,在PHP中我经常能用到。用的场景也很多,比如,正则匹配字符串,判断字符是否存在,正则替换等等。例子一:$string = abcd; $re = preg_replace(/(a)/, \1A,$string);echo $re;//结果 // aAbcd这里用到了正则的捕获组概念和反引用。解释:捕获组我们可以从第一个`(` 向后数, 第一个括号...

php-PCRE正则表达式后向引用的详细介绍

在一个字符类外面, 反斜线紧跟一个大于 0 (可能还有一位数)的数字就是一个到模式中之前出现的某个捕获组的后向引用。如果紧跟反斜线的数字小于 10, 它总是一个后向引用, 并且如果在模式中没有这么多的捕获组会引发一个错误。 换一种说法, 被引用的括号不能少于被引用的小于 10 的数量。 查看上面的”反斜线”部分查看具体的数字处理方式。一个后向引用会直接匹配被引用捕获组在目标字符串中实际捕获到的内容, 而不是匹配子组模...

php正则表达式的反向引用问题?

理论上的问题哈: 反向引用子表达式我知道的是: \1 表示引用第一个子表达式的值 后来无意看到有人这样引用: ${1} 就孤陋寡闻了,可以用,但是查不到相关文档说明,请高手教诲 回复讨论(解决方案) $1 js 里就是这么用的 http://cn2.php.com/manual/zh/function.preg-replace.php 有说明: 用于替换的字符串或字符串数组。如果这个参数是一个字符串,并且pattern 是一个数组,那么所有的模式都使用这个...

php中的正则反向引用求解?

本帖最后由 u010572351 于 2013-06-06 17:46:46 编辑 是这样的,使用正则将匹配的连续4个数字加上一个括号,数字不变。 老师说的是反向捕获,好像使用的是{1},我试了下不行,然后网上说的是\1,有反应但是不对,然后我自己改了个下面写的\0,就反向捕获到了,但是网上查了下,好像没这样写的,,,,,但是我的确捕获到了4个数字,是怎么回事??? 还有,数组式正则的什么意思? $a="abcd 1234reo 5678"; //下面我们...

新手请教:正则表达式反向引用的疑问

各位前辈,大家好!我是菜鸟,有事请教。 我最近在看《细说PHP》,看书里讲,正则表达式里的每个子表达式(用()包含起来的),在不添加任何非捕获元字符的情况下,是按照从左至右,每个子表达式的匹配结果存进缓冲区,并用编号\1至\99引用,不知道我这么描述对不对。现在有两个问题: 1、书上说,使用编号引用子表达式,要在编号前加反斜线转义,这条很纠结,我试的是不需要的,是不是跟什么版本有关系? 2、表达式中,某个...

PHP核心技术与最佳实践之正则表达式反向引用【图】

PHP核心技术与最佳实践之正则表达式反向引用 反向引用用于重复搜索前面某个分组匹配的文本。例如:“\1”代表分组1匹配的文本: \b(\w+)\b\s+\1\b 要反向引用分组捕获的内容,可以使用“\k”上个例子: \b(?\w+)\b\s+\k\b 【示例】:UBB标签代码 UBB标签用来在论坛和留言板中代替HTML,实现一些简单的HTML效果,同时防止滥用HTML出现安全问题。 最终UBB标签还是会要解析成HTML代码,才能让浏览器认识,以url标签为例。 “[...

php正则逆向引用与子模式分析

先看一个例子: 例子的结果是:April1,2003 函数preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。replacement可以包含\\n形式或$n形式的逆向引用,n可以为0到99,\\n表示匹配pattern第n个子模式的...

正则表达式后向引用,该如何解决

正则表达式后向引用PHP code$reg = "/(\d{2})\/(\d{2})\/(\d{4})/e"; $text = 01/25/2009到02/02/2009; $replace = "\${3},\${1}";echo preg_replace($reg, $replace, $text);报错:syntax error, unexpected ','如果将逗号去掉,输出“200901到200902 ”把逗号换成别的符号也都会报错~------解决方案-------------------- 把e去掉

php正则表达式的反向引用有关问题

php正则表达式的反向引用问题?理论上的问题哈:反向引用子表达式我知道的是: \1 表示引用第一个子表达式的值后来无意看到有人这样引用: ${1} 就孤陋寡闻了,可以用,但是查不到相关文档说明,请高手教诲分享到:------解决方案--------------------$1 js 里就是这么用的------解决方案--------------------http://cn2.php.com/manual/zh/function.preg-replace.php 有说明:用于替换的字符串或字符串数组。如果这个参数是一个字...

新手请问:正则表达式反向引用的疑问

新手请教:正则表达式反向引用的疑问各位前辈,大家好!我是菜鸟,有事请教。我最近在看《细说PHP》,看书里讲,正则表达式里的每个子表达式(用()包含起来的),在不添加任何非捕获元字符的情况下,是按照从左至右,每个子表达式的匹配结果存进缓冲区,并用编号\1至\99引用,不知道我这么描述对不对。现在有两个问题:1、书上说,使用编号引用子表达式,要在编号前加反斜线转义,这条很纠结,我试的是不需要的,是不是跟什么版本有...

javascript-在js的正则里面能引用正则本身的变量吗?

比如在php里面preg_prelace("/(.+?)/is", $text); 这个在我可以用\\1来引用第一个参数,在js的正则表达式里可以这么用吗?回复内容:比如在php里面preg_prelace("/(.+?)/is", $text); 这个在我可以用\\1来引用第一个参数,在js的正则表达式里可以这么用吗?用\n就可以了,比如\1,\2,例子:var regexp = /(['"])[^'"]*\1/; console.log(regexp.test("'1'"),regexp.test('"2"'),regexp.test('"3\'') ); /* true true false */ 当然...