Python正则表达式的使用技巧,都在这里了
导读:今天就来跟大家一起介绍下正则表达式的使用技巧。
01 小括号,大作用
一般用于获取 () 中的正则内容进行下一步操作使用,如果想要关闭这种获取能力,可以在左括号 ( 后面加上 ?: 就可以了。 另一个作用就是让括号内正则表达式进行组合,方便使用之前介绍的 ?* + 等,还有或操作符 |。
02 断言
\b:匹配单词的边界 \B:匹配非单词边界,会受到ASCII标记影响 \A/^:从开始位置匹配, 如有MULTILINE标志,则^会在每个换行符后匹配 \Z/$:在结束位置匹配,如有MULTILINE标志,则$在每个换行符前匹配
正前瞻(?=e):如 表达式1(?=表达式2) 表达式3 ,则表式后面的内容需要匹配表达式2; 负前瞻(?!e):如 表达式1(?!表达式2) 表达式3 ,则表式后面的内容不能匹配表达式2; 正回顾(?<=e):如 (?<=表达式2)表达式1 表达式3 ,则表式前面的内容需要匹配表达式2; 负回顾(?<!e):如 (?<!表达式2)表达式1 表达式3 ,则表式前面的内容不能匹配表达式2。
03 条件表达
04 正则的四大功能
匹配:这个之前已经详细讲过了,就是看这个字符串是否符合正则表达式的语法。 提取:这个功能就是用来通过正则表达式提取指定字符串中符合要求的文本,如果有符合表达式的内容会返回一个或多个。 替换:这个功能可能用的会少一些,主要是用来将查找到的符合要求的文本,替换成我们指定的字符串。 拆分:这个功能用的更少了,其实就是用正则表达式对符合要求的文本字串进行分割。
05 正则的其他方法
sub(str, t, n):这个方法用来替换操作。即将每个匹配到的文本用 str 进行替换,并返回替换后的字符串。当指定了 n 时,则最多替换 n 次。对于 str 可以是组名或者编号来引用捕获到的内容。 subn(str, t, n):这个方法和 sub() 方法基本相同,只是这个会返回一个二元组,其中除了包括结果字串,还有替换的数量。 split(str, n):这个方法是用来拆分字串操作。即将匹配到的文本对字符串进行分割,并返回一个结果列表。如果正则存在分组,则把分组匹配文本放列表中,并且每两个分割的中间作为列表的一部分。
06 正则匹配对象
group():返回编号或组名匹配到的内容。默认(0)是表示匹配整个表达式内容,当然也可以指定多个,则会返回一个元组数据。 groupdict():这个方法会返回一个字典,其中字典的 KEY 是命名的组名,VALUE 为组名对应获取的内容。 groups():该方法会返回一个包含所有捕获内容的子分组的元组,如果指定了默认值,则这个值就会作为没有获取到的内容的值。 lastgroup():该方法用于获取最后一个匹配到内容的组名。 lastindex():该方法会返回最后一个匹配到内容的组编号。 start():该方法用于指定匹配内容子分组是从字串的哪个位置开始匹配的,如果没有匹配则返回 -1。 end():该方法用于返回当前匹配对象子分组是从哪个位置匹配结束的,如果没有匹配则返回 -1。 span():该方法会返回一个二元组,内容为 (start(), end()) 的返回值。 pos():该方法用于搜索字符串的开头起始位置。 endpos():该方法用于搜索字符串的结束末尾位置。
07 常用正则表达式
英文和数字: ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 中文、英文、数字包括下划线: ^[\u4E00-\u9FA5A-Za-z0-9_]+$ Email地址: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 手机号码: ^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 身份证号码: (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$) 空白行:\n\s*\r 日期格式:^\d{4}-\d{1,2}-\d{1,2} 复杂密码: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ 域名: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
08 总结
评论