登录 |
  • 注册
  • 正则表达式元字符

    2009年06月28日 下午 43:10 | 作者:pangyt

    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)

    发表评论

    *必填

    *必填 (不会被公开)