导航

正则表达式

Posted on 2015-07-23 17:20  talenth  阅读(154)  评论(0编辑  收藏  举报

一 特殊符号

        一共12个, 这些是输出包含的字符序列, 所以像[[:alnum:]], [^[:alnum:]]这种两个中括号的表达式就比较好理解了; 尽量不要用[a-z]之类, 因为不同的字符编码方式, 对这种表达式的解释不同

1 字母数字

   [:alnum:]→[0-9,a-z,A-Z]

   [:alpha:]→[a-z,A-Z]

   [:upper:]→[A-Z]

   [:lower:]→[a-z]

   [:digit:]→[ 0-9]

   [:xdigit:]→[ 0-9,a-f,A-F]

2 空白字符

   [:blank:]→[ ‘ ’,‘\t’]

   [:space:]→[‘ ’, ‘\f’,‘\n’,‘\t’, ‘\v’, ‘\r’]

3 其他字符

   [:cntrl:]→[控制字符,即ASCII中[0,31]范围内,还有127的字符]

   [:print:]→[可以打印的字符(字母, 数字, 标点符号, 空格),即ASCII中[32,126]范围内的字符]

   [:graph:]→[除空格外的可打印字符(字母, 数字, 标点符号),即ASCII中[33,126]范围内的字符]

   [:punct:]→[标点符号,即graph中除了字母跟数字]

二 基础用法

1 ^word→行首匹配

2 word$→行尾匹配

3 .→代表一定有一个任意字符的字符

4 \→转义字符前缀

5 *→重复零个到无穷多个前字符

6 [list]→list序列里面的任意字符

7 [n1-n2]→根据编码方式, n1到n2之间的任意一个字符

8 [^list]→不在list序列中的任意一个字符

9 \{n,m\}→连续n到m个前字符

10\{n\}→连续n个前字符

11\{n,\}→连续n个以上前字符

三 扩展用法

1 +→重复一个或一个以上的前字符

2 ?→零个或一个前字符

3 |→or  eg: 'glad|good'

4 ()→找出"组"字符串 eg: 'g(la|oo)d'

5 ()+→重复一个或一个以上的组串 eg: 'A(xyz)C'