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']
上一篇: 八戒口误实录