Python——正则表达式re讲解
Python——正则表达式re讲解
文章目录
- Python——正则表达式re讲解
- 正则表达式语法
- 元字符
- .
- ?
- *
- +
- {}
- ()
- [ ]
- re模块
- 标志常量
- re.IGNORECASE
- 函数
- p a t t e r n r e . c o m p i l e ( p a t t e r n , f l a g s = 0 ) pattern re.compile(pattern, flags=0) patternre.compile(pattern,flags=0)
- M a t c h r e . s e a r c h ( p a t t e r n , s t r i n g , f l a g s = 0 ) Match re.search(pattern, string, flags=0) Matchre.search(pattern,string,flags=0)
- M a t c h r e . m a t c h ( p a t t e r n , s t r i n g , f l a g s = 0 ) Match re.match(pattern, string, flags=0) Matchre.match(pattern,string,flags=0)
- 匹配对象
正则表达式语法
正则表达式(或 RE)指定了一组与之匹配的字符串;模块内的函数可以检查某个字符串是否与给定的正则表达式匹配(或者正则表达式是否匹配到字符串,这两种说法含义相同)。
元字符
.
匹配除了换行符以外的任意字符
?
匹配前面的字符0次或1次(可以用于取消贪婪模式)
*
匹配前面的字符0次或多次
+
匹配前面的字符1次或多次
{}
{m}
:匹配前面的字符恰好出现m次
{m,}
:匹配前面的字符至少出现m次
{m,n}
:匹配前面的字符出现m到n次
{,n}
: 匹配前面的字符至多出现n次
()
():将括号内的字符作为一组
|:匹配左右两边任意一个字符
[ ]
两个元字符用于指定一个字符类,也就是你希望匹配的字符的一个集合。这些字符可以单独地列出,也可以用字符范围来表示(给出两个字符并用 ‘-’ 分隔)。例如,[abc] 将匹配 a、b、c 之中的任意一个字符;这与 [a-c] 相同,后者使用一个范围来表达相同的字符集合。如果只想匹配小写字母,则正则表达式将是 [a-z] 。
^
通过对集合 取反 来匹配字符类中未列出的字符
re模块
标志常量
re.IGNORECASE
进行忽略大小写匹配;表达式如 [A-Z] 也会匹配小写字符。
用法:将re模块中函数的flags参数赋值为re.IGNORECASE
例:
re.compile(pattern, flags=re.IGNORECASE)
函数
p a t t e r n r e . c o m p i l e ( p a t t e r n , f l a g s = 0 ) pattern re.compile(pattern, flags=0) patternre.compile(pattern,flags=0)
将正则表达式的样式编译为一个 正则表达式对象 (正则对象),可以用于匹配,通过这个对象的方法 match(), search()
M a t c h r e . s e a r c h ( p a t t e r n , s t r i n g , f l a g s = 0 ) Match re.search(pattern, string, flags=0) Matchre.search(pattern,string,flags=0)
扫描整个 字符串 找到匹配样式的第一个位置,并返回一个相应的 匹配对象。如果没有匹配,就返回一个 None ; 注意这和找到一个零长度匹配是不同的。
M a t c h r e . m a t c h ( p a t t e r n , s t r i n g , f l a g s = 0 ) Match re.match(pattern, string, flags=0) Matchre.match(pattern,string,flags=0)
如果 string 开始的0或者多个字符匹配到了正则表达式样式,就返回一个相应的 匹配对象 。 如果没有匹配,就返回 None ;注意它跟零长度匹配是不同的。
匹配对象
匹配对象总是有一个布尔值 True。如果没有匹配的话 match() 和 search() 返回 None 所以你可以简单的用 if 语句来判断是否匹配
match = re.search(pattern, string)
if match:
process(match)
属性和方法
Match.group([group1, …])
返回一个或者多个匹配的子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,组1默认到0(整个匹配都被返回)。 如果一个组N 参数值为 0,相应的返回值就是整个匹配字符串;如果它是一个范围 [1…99],结果就是相应的括号组字符串。如果一个组号是负数,或者大于样式中定义的组数,就引发一个 IndexError 异常。如果一个组包含在样式的一部分,并被匹配多次,就返回最后一个匹配。
M a t c h . s t a r t ( [ g r o u p ] ) , M a t c h . e n d ( [ g r o u p ] ) Match.start([group]),Match.end([group]) Match.start([group]),Match.end([group])
返回 group 匹配到的字串的开始和结束标号。group 默认为0(意思是整个匹配的子串)。如果 group 存在,但未产生匹配,就返回 -1 。对于一个匹配对象 m, 和一个未参与匹配的组 g ,组 g (等价于 m.group(g))产生的匹配是
m.string[m.start(g):m.end(g)]
M a t c h . s p a n ( [ g r o u p ] ) Match.span([group]) Match.span([group])
对于一个匹配 m , 返回一个二元组 (m.start(group), m.end(group)) 。 注意如果 group 没有在这个匹配中,就返回 (-1, -1) 。group 默认为0,就是整个匹配。