PHP正则表达式教程

1、入门简介 
 
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 

很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。

2、 基本语法 
 
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。格式如下:

/正则表达式/[模式修正符]  


正则表达式包含: 
1、 普通字符:包含a-z、A-Z、0-9

2、 元字符:包含特殊符号、转义字符、限定符、定位符 

3、 模式修正符:用固定的字符,表示特定含义,是正则补充说明的

1.普通字符和2.元字符之后再介绍

3. 模式修正符有哪些.

Perl风格的正则表达式允许把单个字符选项(标志)放在正则表达式模式后面来修改匹配的解释或行为。例如,要进行不区分大小写的匹配,可以简单地使用i标志:
preg_match('/cat/i', 'Stop, Catherine!');        // returns true返回true

Perl标志 修饰符 意 义
/regexp/i 不区分大小写的匹配
/regexp/s 使句点(.)匹配任何字符,包括换行符( )
/regexp/x 从模式中删除空白符和注释
/regexp/m 使^匹配换行符 ( )之后的内容,美元符号($)匹配换行符 ( )之前的内容
/regexp/e 如果替换字符串是PHP代码,使用eval()执行该代码来得到实际的替换字符串。
 
PHP的Perl兼容正则表达式函数也支持在Perl中不支持的其他修饰符:
其他的PHP标志 修饰符 意 义
/regexp/U 颠倒子模式的贪婪性;*和+尽可能少地匹配而不是尽可能多。
/regexp/u 把模式字符串当作UTF-8编码对待
/regexp/X 如果一个反斜杠之后跟着没有特殊意义的字符,将产生一个错误
/regexp/A 把锚定位在字符串的开头就像模式中有^一样
/regexp/D 使$字符仅匹配一行的末尾
/regexp/S 使表达式解析器更加小心地检查模式的结构,使得第二次运行时(如在一个循环中)加快速度

参考:

https://wenku.baidu.com/view/152e98373968011ca3009120.html

https://wenku.baidu.com/view/adcaf2a802768e9950e738a7.html

http://www.php.cn/regexp/regexp-tutorial.html

原文地址:https://www.cnblogs.com/fps2tao/p/9051113.html