POSIX与Perl正则对比:preg_match vs ereg,preg_replace vs ereg_replace
140 浏览量
更新于2024-08-31
收藏 82KB PDF 举报
"这篇文章除了介绍POSIX风格和Perl兼容风格的正则表达式主要函数外,还强调了在实际使用中的选择建议。文章提到了PHP中的ereg函数和ereg_replace函数作为POSIX风格正则表达式的主要代表,以及preg_match和preg_replace作为Perl兼容风格的代表。POSIX风格的ereg函数用于在字符串中查找匹配正则表达式的子串,返回匹配长度,而ereg_replace函数则用于执行正则表达式的替换操作。然而,文章建议使用Perl兼容的preg系列函数,因为它们通常具有更好的性能和更丰富的功能。在示例中,ereg函数用于解析和转换日期格式。"
在PHP中,正则表达式有两种主要的实现方式,即POSIX扩展和Perl兼容正则表达式(PCRE)。POSIX风格的正则表达式函数包括`ereg`和`ereg_replace`,而Perl兼容风格的函数则为`preg_match`和`preg_replace`。
1. ereg函数:
- 函数签名:`int ereg(string pattern, string string [, array ®s])`
- 这个函数以区分大小写的方式在`string`中查找与`pattern`匹配的子串。如果找到匹配,它会将匹配的子模式存储在`regs`数组中,其中`regs[0]`是整个匹配的字符串,`regs[1]`、`regs[2]`等依次对应于`pattern`中圆括号内子模式的匹配内容。
- 返回值:成功时返回匹配的子串长度,未找到匹配或出错时返回`FALSE`。若无`regs`参数或匹配长度为0,则返回1。
2. ereg_replace函数:
- 函数签名:`string ereg_replace(string pattern, string replacement, string string)`
- 它会在`string`中查找符合`pattern`的子串,并用`replacement`替换它们。`replacement`可以包含反斜杠转义的子串,如`\d`,来引用`pattern`中的子模式。
- 返回值:返回替换后的字符串,若没有匹配项则返回原字符串。
相比之下,Perl兼容的`preg_match`和`preg_replace`提供了更强大的功能和更丰富的正则表达式语法,因此在大多数情况下推荐使用这两个函数。`preg_match`支持全局匹配、多行模式等多种高级特性,而`preg_replace`则可以使用回调函数进行复杂替换逻辑,同时具备更高效的性能。
在文章给出的示例中,`ereg`被用于解析一个ISO格式的日期(YYYY-MM-DD),并将其转换为DD.MM.YYYY格式。这个例子展示了POSIX风格正则表达式如何捕获和提取子串,但同样功能可以使用`preg_match`来完成,而且可能效率更高。
虽然POSIX风格的正则表达式函数在早期的PHP版本中广泛使用,但随着技术的发展,Perl兼容的`preg`系列函数已成为主流选择,尤其是在需要更复杂正则表达式特性的场景下。
2024-01-06 上传
2012-12-13 上传
2024-06-05 上传
2023-09-14 上传
2023-10-19 上传
2023-08-30 上传
2023-05-19 上传
2023-05-26 上传
2024-04-12 上传
weixin_38703955
- 粉丝: 2
- 资源: 915
最新资源
- OptiX传输试题与SDH基础知识
- C++Builder函数详解与应用
- Linux shell (bash) 文件与字符串比较运算符详解
- Adam Gawne-Cain解读英文版WKT格式与常见投影标准
- dos命令详解:基础操作与网络测试必备
- Windows 蓝屏代码解析与处理指南
- PSoC CY8C24533在电动自行车控制器设计中的应用
- PHP整合FCKeditor网页编辑器教程
- Java Swing计算器源码示例:初学者入门教程
- Eclipse平台上的可视化开发:使用VEP与SWT
- 软件工程CASE工具实践指南
- AIX LVM详解:网络存储架构与管理
- 递归算法解析:文件系统、XML与树图
- 使用Struts2与MySQL构建Web登录验证教程
- PHP5 CLI模式:用PHP编写Shell脚本教程
- MyBatis与Spring完美整合:1.0.0-RC3详解