首页 > 代码库 > python 正则表达式(一)

python 正则表达式(一)

python 2.7.3

  正则表达式:根据自己的需要定义字符串,与其他的字符串做匹配,如网页数据提取:自定义一个规则将网页中的内容按自己的规则提取出需要的东西。

目前在python 中,正则的使用通过re模块来实现,help(re) 查看详细介绍.

  可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想搞定的东西。你也可以使用 RE 以各种方式来修改或分割字符串。正则表达式模式被编译成一系列的字节码,然後由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。

 

############################  元字符 ###########################

一:字符匹配

  1.普通字符匹配

    123和123匹配

  2.元字符匹配(help(re)中有详细说明)

"."  表示任意字符
"^ " 表示字符串的起始、行首:>>>str=‘123,321,234,432,123‘  

               >>> ss=‘123‘ 

               >>> re.findall(s,ss)

              [‘123‘, ‘123‘]

               >>>ss=‘^123‘

               >>>re.findall(s,ss)

              [‘123‘]    #123是行首的那个

            
"$" 表示字符串的结束  

              >>>ss=‘123$‘  将匹配最后的那个123

+   表示匹配一或更多次

*  匹配0或更多次

?  表示匹配零次或一次-
*?, +?, ??  符合条件的情况下,匹配的尽可能少//限制*,+,?匹配的贪婪性
{m} 匹配此前的字符,重复m次  如:r=‘010-\d{8}‘ 将表示010-后面需要8个0到9的数字
{m,n} m到n次,m,n可以省略

举个例子 ‘a.*b’ 表示a开始,b结束的任意字符串
a{5}  匹配连续5个a

[ ] 

 》 表示一系列字符  [abcd] 表a,b,c,d  注:ss = r‘a[bcd]ef‘ ,将表示ss=abef 或acef或adef

    [0-9] 表示0到9 [a]

 》 补集匹配不在区间内的字符:[^123] ,表示将匹配除了123的其它字符

|  A|B 表示A或者B , AB为任意的正则表达式  另外|是非贪婪的如果A匹配,则不找B
(…)  这个括号的作用要结合实例才能理解, 用于提取信息

\d  [0-9] 匹配任何十进制数  [0-9]
\D  非 \d 匹配任何非十进制数 [^0-9]
\s  表示空字符   [\t\n\r\f\v]
\S  非空字符      [^\t\n\r\f\v]
\w  匹配任何字母数字字符[a-zA-Z0-9_]     
\W  非 \w

 

参考:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

################################################################################

 

python 正则表达式(一)