本文主要是介绍python re.compile()和findall(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
compile(pattern[,flags] ) 根据包含正则表达式的字符串创建模式对象。
>>>help(re.compile)
compile(pattern, flags=0)Compile a regular expression pattern, returning a pattern object.
通过help可以看到compile方法的介绍,返回一个pattern对象,但是却没有对第二个参数flags进行介绍。第二个参数flags是匹配模式,可以使用按位或’|’
表示同时生效,也可以在正则表达式字符串中指定。pattern对象是不能直接实例化的,只能通过compile方法得到。匹配模式有:
- re.I(re.IGNORECASE): 忽略大小写
- re.M(MULTILINE): 多行模式,改变’^’和’$’的行为
- re.S(DOTALL): 点任意匹配模式,改变’.’的行为
- re.L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
- re.U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
- re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
例如:
pattern1 = re.compile('abc', re.I) #忽略大小写
findall用法示例:
>>> import re
>>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " >>> reObj1 = re.compile('((\w+)\s+\w+)')
>>> reObj1.findall(s)
[('adfad asdfasdf', 'adfad'), ('asdfas asdfawef', 'asdfas'), ('asd adsfas', 'asd')] >>> reObj2 = re.compile('(\w+)\s+\w+')
>>> reObj2.findall(s)
['adfad', 'asdfas', 'asd'] >>> reObj3 = re.compile('\w+\s+\w+')
>>> reObj3.findall(s)
['adfad asdfasdf', 'asdfas asdfawef', 'asd adsfas']
-
当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。
-
当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。
-
当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。
这篇关于python re.compile()和findall()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!