正则表达式元字符
http://www.phpweblog.net/fuyongjie/archive/2009/03/11/6375.html
[^xyz] 字符的补集,除xyz之外的字符
^-?[0-9]*.?[0-9]*$ 所有小树
通用字符簇:
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
============
常用的正则表达式
1、非负整数:”^\d+$”
2、正整数:”^[0-9]*[1-9][0-9]*$”
3、非正整数:”^((-\d+)|(0+))$”
4、负整数:”^-[0-9]*[1-9][0-9]*$”
5、整数:”^-?\d+$”
6、非负浮点数:”^\d+(\.\d+)?$”
7、正浮点数:”^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”
8、非正浮点数:”^((-\d+\.\d+)?)|(0+(\.0+)?))$”
9、负浮点数:”^(-((正浮点数正则式)))$”
10、英文字符串:”^[A-Za-z]+$”
11、英文大写串:”^[A-Z]+$”
12、英文小写串:”^[a-z]+$”
13、英文字符数字串:”^[A-Za-z0-9]+$”
14、英数字加下划线串:”^\w+$”
15、E-mail地址:”^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”
16、URL:”^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”
=============
Perl和POSIX表达式的写法区别
preg ereg
\d+ [0-9]*
[abc\d+] abc[0-9]* //perl中字符都要加上分隔符[]或()或||
\w [A-Za-z0-9_]
[log]$i ereg中模式修正符i,m,s等无效,所以最接近的表达式是: log$
perl中字符串必须包含在[],()之间或是紧邻^、$
====================================
基本元字符
元字符 说明
. 匹配任意单个字符
| 逻辑或操作符
[] 定义一个字符集合,匹配该集合中的一个字符
[^] 对字符集合求非(是对整个集合求非,而不是紧挨着^符号的字符)
- 在字符集合中定义一个区间。如[A-Za-z]
\ 对下一个字符转义。比如\n表示换行。
数量元字符
元字符 说明
* 匹配前一个字符(子表达式)零次或多次
*? *的懒惰型版本(防止正则表达式的“贪婪性”)
+ 匹配前一个字符或子表达式一次或多次
+? +的懒惰型版本
? 匹配前一个字符或子表达式零次或一次
{n} 匹配前一个字符或子表达式的n次重复,比如[A-Z]{6}表示匹配由六个大写字母组成的字符串。
{m,n} 匹配至少m次至多n次
{m,} 匹配至少m次
{m,}? {m,}的懒惰型版本
位置元字符
元字符
说明
^ 行首
$ 行尾
\< 单词开头
\> 单词结尾
\b 单词边界(单词的开头和结束)
\B \b的反义
特殊字符元字符
元字符 说明
[\b] 匹配一个退格字符
\c 匹配一个控制字符
\d 匹配任意一个数字字符,等价于[0-9]
\D \d的反义
\f 换页符
\n 换行符
\r 回车符
\s 匹配一个空白字符
\S \s的反义
\t 制表符
\v 垂直制表符
\w 匹配任意字母、数字、下划线。等价于[A-Za-z0-9_]
\W \w的反义
\x 匹配一个十六进制数字
\0 匹配一个八进制数字
回溯引用和前后查找
元字符 说明
() 定义一个子表达式
\1 第一个子表达式,同理\2表示第2个子表达式。\0通常表示整个正则表达式。
?= 向前查找
?<= 向后查找
?! 负向前查找
?!= 负向后查找
?() 条件(if then)
?()| 条件(if then else)

