ibmphp正则
六月 29, 2008 | linux | RSS 2.0
掌握 PHP 中的正则表达式,第 2 部分: 如何在 PHP 中处理文本 掌握 PHP 中的正则表达式非常简单 —— 只要您足够贪婪、懒惰和嫉妒 | ![]() |
![]() |
级别: 中级 Martin Streicher (martin.streicher@gmail.com), 主编, McClatchy Interactive 2008 年 3 月 09 日 本文是 “掌握 PHP 中的正则表达式” 系列的第 2 部分,通过本文您将了解如何用一些高级正则表达式 (regex) 操作符来解决各种复杂的文本处理问题。 虽然术语数据 和信息 可以互换使用,但是两者之间有很大的差别。数据是有据可依的。温度列表、近期销售状况说明或者库存零部件清单,这些都是数据。信息含有一定见解。天气预报、损益表和销售趋势属于信息。数据是由若干个 1 和 0 表示,而信息则经由人脑分析得出。 数据和信息之间是软件应用程序:引擎将把数据和信息来回转换。例如,如果在线购买图书,购书应用程序将把信息 —— 书名、身份信息、银行帐号信息 —— 转换为数据,例如订单号、售价、信用卡交易详细信息和对存货清单的调整。类似地,购书应用程序将把数据再转换为仓库提货请求、运输标签和跟踪编号等完成销售所需的信息。 当然,创建应用程序的复杂度与其影响的转换直接成正比。Web 站点留言本十分简单,它把姓名和地址转换为数据库中的字段。同时,在线商店十分复杂,它将把各类信息转换为业务数据模型并把数据转换为信息来推动决策。编程的艺术在于对数据和信息的熟练处理 —— 类似于在明暗处理中捕捉亮色的技能。 如 第 1 部分 中所述,regex 是处理数据的最强大工具之一。使用简明的简写方式,regex 说明了数据的格式并分解数据。例如,您可以使用下面的 regex 处理所有摄氏或华氏温度: /^([+-]?[0-9]+)([CF])$/ 。 regex 将匹配行的开头(由脱字符号 ^ 表示),后接一个正号,一个负号,或者两者都不是 ( [+-]? ),后接一个整数 ( [0-9]+ ),数值范围限定符 —— 摄氏或华氏 ( [CF] ) —— 并在行尾(用美元符号 $ 表示)终止。 在温度 regex 中,行开头和行结尾操作符是两个零宽度断言 示例,或者匹配位置而非文字。括号也不是文字。相反,嵌入到括号内的模式将捕捉匹配模式的文本。因此,如果文本匹配了整个模式,第一组括号将生成表示一个正整数或负整数的的字符串,例如 +49。第二组括号将生成字母 C 或 F。 第 1 部分介绍了 regex 的概念和可用于比较文本与模式和提取匹配的 PHP 函数。现在我将更深入地研究 regex 并查看一些高级操作符和处理方法。 清单 1 所示),将针对候选字符串 “EDU”、“edu” 和 “Edu” 匹配 regex ((?i)edu) 。如果子模式以修饰词 (?i) 为开头,则在子模式中进行匹配不区分大小写。只要子模式结束,区分大小写将被重新启用(将此修饰词与上面的 / … /i 修饰词相比较,后者应用于整个模式)。 |
正则表达式几乎无所不能,也许惟一的限制因素就是您的想象力和创造力了
