欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习-53 正则表达式

程序员文章站 2022-07-01 16:14:36
正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。 1.元字符 -普通字符,大多数字符和字母都会和自身匹配 -元字符 例如: . ^ $ * ? { } [ ] | ......

 

正则表达式

 

     就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过re模块实现,正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行。

 

1.元字符

-普通字符,大多数字符和字母都会和自身匹配

-元字符

 例如: .   ^   $   *   ?   { }   [  ]   |   ( )  \

>>> re.findall("a...d","abcfdasf")
['abcfd']
>>> re.findall("^a...d","abcfdasf")       # 需要找的内容必须在字符串开头
['abcfd']
>>> re.findall("x.....u$","xiaohongxiaogangxiaomingxiaowangxiaoliu")        # 需要找的内容必须在结尾
['xiaoliu']
>>> re.findall("xiaoliux+","xiaohongxiaogangxiaomingxiaowangxiaoliu")  # + (1,无穷)
[]
>>> re.findall("xiaoliux*","xiaohongxiaogangxiaomingxiaowangxiaoliu")  # * (0,无穷)
['xiaoliu']
>>> 
>>> re.findall("liu?","xiaohongxiaogangxiaomingxiaowangxiaoliuuu")    # ? (0,1)
['liu']
>>> re.findall("liu{3}","xiaohongxiaogangxiaomingxiaowangxiaoliuuu")       # { } 可以是任意范围
['liuuu'] 
>>> re.findall("liu{4}","xiaohongxiaogangxiaomingxiaowangxiaoliuuu")
[]

>>> re.findall ("q[a-z]","sdafqaa")    # q与取到的a到z相匹配
['qa']

>>> re.findall ("q[0-9]*","sdafq77aa456")  # 取数字
['q77']
>>> re.findall ("q[^a-z]","sdafq77aa456")    #  ^ 匹配 非 a-z的值
['q7']
>>> re.findall ("\([^()]*\)","12+(34*6+2-5*(2-1))")  # \ ( 将括号转换为普通括号
['(2-1)']

 

-------

\d 匹配任何十进制数,它相当于类[0-9]

\d 匹配任何非数字字符串,它相当于类[^0-9]

\s匹配任何空白字符,它相当于类[\t \n \r \f \v]

\s 匹配任何非空白字符,它相当于类[^ \t \n \r \f \v]

\w 匹配任何字母数字字符,它相当于类[a-za-z0-9]

\w 匹配任何非字母数字字符,它相当于类[^ a-za-z0-9]

\b 匹配一个特殊字符边界,比如空格,& ,#等

>>> re.findall ("\d+","12+(34*6+2-5*(2-1))")
['12', '34', '6', '2', '5', '2', '1']
>>> re.findall ("\d+","12+(34*6+2-5*(2-1))")
['+(', '*', '+', '-', '*(', '-', '))']
>>> re.findall ("\s","hello world")
[' ']
>>> re.findall ("\s","hello world")
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
>>> re.findall ("\w+","hello world")
['hello', 'world']
>>> re.findall ("\w","hello world")
[' ']
>>> re.findall ("\w","hello1 world2")
['h', 'e', 'l', 'l', 'o', '1', 'w', 'o', 'r', 'l', 'd', '2']
>>> re.findall ("\w+","hello1 world2")
['hello1', 'world2']