正则表达式(python)——1

 

                                      表1 常用正则表达式符号和特殊字符
符号 说明 举例
literal 匹配字符串的值 foo
rel|rel2 匹配正则表达式rel1或rel2 foo|bar
. 匹配任何字符(换行符除外) b.b
^ 匹配字符串开始 ^Doctor
$ 匹配字符串结尾 /bin/*sh$
* 匹配前面出现的正则表达式0次或多次 [A-Za-z0-9]*
+ 匹配前面出现的正则表达式1次或多次 [a-z]+\.com
? 匹配前面出现的正则表达式0次或1次 goo?
{N} 匹配前面出现的正则表达式N次 [0-9]{3}
{M,N} 匹配重复出现M次到N次的正则表达式 [0-9]{5,9}
[...] 匹配字符组里出现的任意一个字符 [aeiou]
[..X-Y..] 匹配从字符X到Y中的任意一个字符 [0-9],[A-Za-z]
[^...] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) [^aeiou],[^A-Za-z]
(*|+|?|{})? 用于上面出现的任何“非贪婪”版本,重复匹配次数符号(*,+,?,{}) .*?[a-z]
(...) 匹配封闭括号中正则表达式,并保存为子组 ([0-9]{3})?,f(oo|u)bar

 

特殊字符
符号 说明 举例
\d 匹配任何数字,和[0-9]一样(\D是\d的反义) data\d+.txt
\w 匹配任何数字字母字符,和[A-Za-z0-9]相同(\W是\w的反义) [A-Za-z]\w+
\s 匹配任何空白字符,和[\n\t\r\v\f]相同(\S是\s的反义) of\sthe
\b 匹配单词边界(\B是\b的反义) \bThe\b
\nn 匹配已保存的子组(请参考(...)) price:\16
\c 逐一匹配特殊字符c(即取消它的特殊含义,按字面匹配)\.,\\,\* \.,\\,\*
\A (\Z) 匹配字符串的起始(结束) \ADear

1. 用管道符号(|)匹配多个正则表达式模式:

   它的意思是选择被管道符号分隔的多个不同的正则表达式中的一个(相当于逻辑或)。例如:

      正则表达式    匹配的字符串

    at|home    at,home

    r2d2|c3p0     r2d2,c3b0

2. 匹配任意一个单个的字符(.)

    点符号或句号(.)符号匹配除换行符(NEWLINE)外的任意一个单个字符

      正则表达式    匹配的字符串

    f.o      在"f"和"o"中间的任何字符,如fao,f9o,f#o等

3. 从字符串的开头或结尾或单词边界开始匹配(^/$ /\b /\B)

      正则表达式    匹配的字符串

   ^From      匹配任何以From开水的字符串

   /bin/tcsh$     匹配任何以/bin/tcsh结束的字符串

   ^Subject:hi$      匹配仅由Subject:hi组成的字符串

    \bthe           匹配任何以"the"开始的字符串

    \Bthe         任意包含"the"但不以"the"开通的单词

  \b和\B是用来匹配单词边界。两者之间的区别是,\b匹配的模式是一个单词边界,就是说,与之对应的模式一定在一个单词的开头,不论这个单词的前面是有字符(该词在一个字符串中间),还是没有字符(该单词在一行的起始处)。\B只匹配出现在一个单词中间的模式(即不再单词边界上的字符).

4. 创建字符类([])

      正则表达式    匹配的字符串

   b[aeiu]t         bat,bet,bit,but

 [cr][23][dp][o2]      如c3do,r3p2,r2d2等

5. 指定范围(-)和否定(^)

    如:  z.[0-9], [^\t\n],

          ["-a]:在ASCII字符集中,码值在"和a之间的任意一个字符

6. 使用闭包操作符(*,+,?,{})实现多次出现/重复匹配

   *:匹配它左边那个正则表达式出现0次或者0次以上的情况(kleene闭包操作符);

  +:匹配它左边那个正则表达式至少出现一次的情况(正闭包操作符);

  ?:匹配它左边那个正则表达式出现0次或1次的情况.

  {}:如果是一个值,表示匹配N次出现;如果是一对值,即{M,N},就表示匹配M次到N次出现。

      正则表达式    匹配的字符串

   [dn]ot?         'd'或'n'后面接'o',最后是最多一个字符't',即do,no,dot,not

    0?[1-9]      1-9中的任意一位数字,前面可能还有个'0'

    [0-9]{15,16}    15或16位数字,例如:信用卡号码

7. 特殊字符集

      正则表达式    匹配的字符串

   \w+-\d+        一个由字母或数字组成的字符串,和至少一个数字,两部分中间由'-'相连

    [A-Za-z]\w+   第一个字符是字母,其余字符是字母或数字

    \d{3}-\d{3}-\d{4}  美国电话号码,例如:800-555-1212

  \w+@\w+\.com  简单的XXX@YYY.com格式的电子邮件地址

8. 用圆括号()建组

  一对圆括号()和正则表达式一起使用时可以实现以下任意一个(或两个)功能:

  1. 对正则表达式进行分组

  2. 匹配子组

      正则表达式    匹配的字符串

   \d+(\.\d*)?    表示简单浮点数,即任意个十进制数字,后面跟一个可选的小数点,然后跟0或多个十进制数

posted @ 2013-03-20 16:05  尘虑萦心  阅读(921)  评论(0编辑  收藏  举报