首先正则表达式又称规则表达式,用来检索、替换那些符合某个模式的文本。在python中,re模块包含了正则表达式的一系列常用函数。例如常用的search、findall、group、span函数等等。
search()函数的原型为regex.search(string[, pos[, endpos]]) 扫描字符串,寻找正则表达式生成匹配的位置,并返回相应的匹配对象。如果字符串中没有与模式匹配的位置,则返回None。注意,函数返回的是在字符串中搜索的正则表达式模式第一次出现的位置!以上例子中所要查找的’a’如果写成’a{2}'表示匹配连续两次出现a.
如果所要查找的字符串中没有两个连续的a则匹配失败!函数group()当没有参数或者参数为0的时候显示整体匹配结果。如果有参数为正整数,那么显示分组结果,即显示子组匹配的结果!
以上是另一种匹配模式,用来匹配所要查询的字符串中所出现的数字,注意写法是\d\d\d匹配的是三位数字,若要匹配两位就写成\d\d,以此类推。
这里正则表达式用来匹配IP地址,ip地址由四部分数字组成,每一部分用英文点号隔开,每部分数字的范围是0~255。[01]{0,1}表示匹配的对象是0或者1并且出现的次数是0-1,如果是{1,3}则表示出现的次数是1-3,也就是次数可以是1和3中的任意一个数包括1和3。[0-4]在正则表达式中指的是闭区间[0,4]中的任意一个整数([0-5]与[0-4]意义相同)。而\.则是将.转义成点号,这里的反斜杠\是转义符号。正则表达式中的圆括号表示分组,类似于数学上的圆括号,从里层到外层,从左至右按组顺序分别进行匹配。以上正则表达式原理再次不再赘述,不理解的朋友们再多对照一下IP地址的格式原理以及正则表达式的原理就会明白了。
^为脱字符,匹配字符是否出现在字符串开头,注意正则表达式默认情况下是开启识别大小写的,当然也可以通过设置来关闭识别大小写。
这里调用了compile函数,将正则表达式实例化成模式对象,而IGNORECASE是compile函数中的一种匹配模式,在该模式下进行匹配的时候不区分大小写,所以这个时候正则表达式写成小写开头的’what’在字符串中也能匹配成功。脱字符一定是用来匹配字符串中的开头字符,如果正则表达式的字符不在字符串开头那么匹配失败!
而$与^的功能相反,前者是匹配正则表达式的字符是否出现在字符串的结尾。
findall与search函数类似,只不过findall是以列表形式返回匹配结果。这里的[a-z]是指匹配a-z所出现的任意字符。
如果在[a-z]的a前加上^脱字符,则表示匹配除了a-z任意字符之外的任何字符。
关于用正则表达式匹配IP地址也可以用上述写法,这里用?替换掉了{0,1},在python正则表达式中*、+、?字符有着特殊用法,*相当于{0,}即至少匹配0次(匹配0次或者多次);+相当于{1,}即至少匹配1次(匹配1次或者多次);?相当于{0,1}即匹配0~1次。
python正则表达式学习笔记(一)
最新推荐文章于 2023-03-21 18:47:30 发布