Python之路-常用模块(re模块)

时间:2021-04-01 22:34:06

.正则表达式

 

        定义:具有特殊含义符号组合到一起用来描述字符或字符串的一种方法。内嵌在Python中,通过

       re模块实现,被编译成一系列字节码,由C编写的匹配引擎执行。

   1.常用匹配模式

        Python之路-常用模块(re模块)

       2.常用的re模块函数

         (1).  re.match()

          决定RE是否在字符串刚开始的位置匹配。//注:这个方法并不是完全匹配。当pattern结束时若string还有剩

         余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$

         格式:

         re.match(pattern, string, flags=0)

         print(re.match('com','comwww.runcomoob').group())

         print(re.match('com','Comwww.runcomoob',re.I).group())

   执行结果如下:
    com com
(2).re.search()

          格式:

         re.search(pattern, string, flags=0)

         re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

         示例:         

         print(re.search('\dcom','www.4comrunoob.5com').group())

   执行结果如下:
   4com

(3).re.findall()

         re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

         格式:

         re.findall(pattern, string, flags=0)

         p = re.compile(r'\d+')

     print(p.findall('o1n2m3k4'))

 执行结果如下: ['1', '2', '3', '4']
(4).一些注意点:

        (1)re.match与re.search与re.findall的区别:

         re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;

         而re.search匹配整个字符串,直到找到一个匹配。

        (2)贪婪匹配与非贪婪匹配

         *?,+?,??,{m,n}?    前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配