前篇我们主要说了正则表达式特殊语义字符,与字符相关的正则表达式,以及与次数相关的正则表达式,这篇继续来汇总与边界相关、与组相关的正则表达式。以及控制标记。
(三)边界相关的内容
1、“^”匹配字符串的开头
默认匹配第一行,如果需要匹配多行,则需要添加re.mutiline,比如说:王张三,非以张开头,他就匹配不到。
而张三,则是以张开头,既可以匹配成功。
2、$ 匹配的时候从后往前匹配,默认匹配最后一行,如果希望支持多行,可以添加控制标记re.multiline比如经常在\.(com$|cn$)
(四)组相关的内容
1、(),作用有两个,一是对括号内的内容进行整体操作。
不加括号会把标签一起读取出来。
加上括号后,只把需要的内容作为一个整体取了出来
二是分组,分组提取,可以对括号中的内容使用group来进行单独提取,group()参数代表提取第几个括号(从1开始)
比如提取电话号码中的区号和电话号,1来取区号,2来取电话号。
2、\number用来指定组序号,序号从1开始,用来匹配对应分组的内容
因为在正则表达式中有特殊字符,所以建议在双引号前加上r,表示后面的双引号中的字符串原样输出
需求:希望获取的内容是成对的标签中的内容
3、| 或者,连接两个正则表达式,代表或者匹配前边的正则表达式,或者匹配后边的正则表达式,不是只针对|两边的字符有效,是针对|两侧的整个正则表达式有效
如果只针对两边的字符有效,需添加括号,如:
控制标记
re.DOTALL 用来代表是否忽略.中的\n