- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
php正则表达式完全手册
前言
?正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
索引
?1._引子
?2._正则表达式的历史
?3._正则表达式定义
?3.1_普通字符
?3.2_非打印字符
?3.3_特殊字符
?3.4_限定符
?3.5_定位符
?3.6_选择
?3.7_后向引用
?4._各种操作符的运算优先级
?5._全部符号解释
?6._部分例子
?7._正则表达式匹配规则
?7.1_基本模式匹配
?7.2_字符簇
?7.3_确定重复出现
1.?引子
?目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux,?Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
?正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。
?例子:?^.+@.+\\..+$
?这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。
?注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。
2.?正则表达式的历史
?正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren?McCulloch?和?Walter?Pitts?这两位神经生理学家研究出一种数学方式来描述这些神经网络。
?1956?年,?一位叫?Stephen?Kleene?的数学家在?McCulloch?和?Pitts?早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
?随后,发现可以将这一工作应用于使用?Ken?Thompson?的计算搜索算法的一些早期研究???Ken?Thompson?是?Unix?的主要发明人。正则表达式的第一个实用应用程序就是?Unix?中的?qed?编辑器。
?如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
3.?正则表达式定义
?正则表达式(regular?expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
?列目录时, dir?*.txt或ls?*.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。
?正则表达式是由普通字符(例如字符?a?到?z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
?3.1?普通字符
?由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
?3.2?非打印字符
????????
???????? 字符?含义
????????\cx?匹配由x指明的控制字符。例如,?\cM?匹配一个?Control-M?或回车符。x?的值必须为?A-Z?或?a-z?之一。否则,将?c?视为一个原义的?c?字符。
????????\f?匹配一个换页符。等价于?\x0c?和?\cL。
????????\n?匹配一个换行符。等价于?\x0a?和?\cJ。
????????\r?匹配一个回车符。等价于?\x0d?和?\cM。
????????\s?匹配任何空白字符,包括空格、制表符、换页符等等。等价于?[?\f\n\r\t\v]。
????????\S?匹配任何非空白字符。等价于?[^?\f\n\r\t\v]。
????????\d:用于匹配从0到9的数字;?
????????\w:用于匹配字母,数字或下划线字符;?
????????\W:用于匹配所有与\w不匹配的字符;?
????????\t?匹配一个制表符。等价于?\x09?和?\cI。
????????\v?匹配一个垂直制表符。等价于?\x0b?和?\cK。
?3.3?特殊字符
?所谓特殊字符,就是一些有特殊含义的字符,如上面说的*.txt中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,
文档评论(0)