关于正则
来源:互联网 发布:unity3d哪个版本好用 编辑:程序博客网 时间:2024/05/20 04:09
有什么用?
回返引用(Back referencing)一般被翻译成“反向引用”、“后向引用”、“向后引用”,个人觉得“回返引用”更为贴切[笨活儿]。它是在正则表达式内部引用之前捕获到的内容的方法。例如,下面这个简单例子的目的是匹配出引号内部的内容:
# 建立匹配数组
$matches
=
array
();
# 建立字串
$str
=
""
This is a
'string'
""
;
# 用正则表达式捕捉内容
preg_match(
"/(/"|').*?(/"|')/"
,
$str
,
$matches
);
# 输出整个匹配字串
echo
$matches
[0];
它会输出:
"This is a'
显然,这并不是我们想要的内容。
这个表达式从开头的双引号开始匹配,遭遇单引号之后就错误地结束了匹配。这是因为表达式里说:("|')
,也就是双引号("
)和单引号('
)均可。要修正这个问题,你可以用到回返引用。表达式/1,/2,…,/9 是对前面已捕获到的各个子内容的编组序号,能作为对这些编组的“指针”而被引用。在此例中,第一个被匹配的引号就由/1
代表。
如何运用?
将上面的例子中,后面的闭合引号替换为1:
preg_match(
'/(/"|'
).*?/1/',
$str
,
$matches
);
这会正确地返回字串:
"This is a 'string'"
译注思考题:
如果是中文引号,前引号和后引号不是同一个字符,怎么办?
还记得PHP函数 preg_replace
吗?其中也有回返引用。只不过我们没有用 /1 … /9,而是用了 $1 … $9 … $n (此处任意数目均可)作为回返指针。例如,如果你想把所有的段落标签<p>
都替换成文本:
$text
= preg_replace(
'/<p>(.*?)</p>/'
,
"<p>$1</p>"
,
$html
);
参数$1是一个回返引用,代表段落标签<p>
内部的文字,并插入到替换后的文本里。这种简便易用的表达式写法为我们提供了一个获取已匹配文字的简单方法,甚至在替换文本时也能使用。
- 关于正则
- 关于正则
- 关于正则
- 关于正则
- 关于“正则”
- 关于正则表达式
- 关于正则表达式
- 关于正则表达式的
- 关于正则表达式
- 关于正则表达式
- 关于正则表达式
- 关于正则表达式
- 关于正则表达式
- 关于java正则表达式
- 关于正则表达式
- 关于正则表达式
- 正则表达式 关于/num
- 关于正则表达式
- Oracle RAC archive log的几种备份方式总结
- WEB漏洞概述
- 在C#程序中创建控件数组
- JOJ 1051: Flip and Shift 解题报告
- 试问联想:利益重要还是消费者的信赖重要?
- 关于正则
- word 创建邮件及合并主文档
- FLEX 命名空间与访问控制符
- 测试人员的挑战
- 云计算仿真工具CloudSim介绍和使用
- 传递参数到线程的n个方法
- [英语阅读]美国“裸体牛仔”竞选纽约市长
- STL中map用法详解
- RemObjects的特征