python - re模块(正则表达式)
2021-06-22 11:06
标签:cab 旗舰版 区别 split 字符 ase spl 技术 match . 单个字符匹配 ^ 以字符开头匹配 在[]里面作为非 $ 以字符结尾匹配 A|B 匹配A或者B的字符串 注意 : | * (0,无穷多)重复匹配符号前字符 + (1,无穷多)重复匹配符号前字符 ? (0,1)重复匹配符号前字符 *和+区别: {} 重复万金油 {0,}等同于 * {1,}等同于+ {0,1}等同于? {3}重复3次 [] 匹配大括号内的字符 [a] 匹配大廓内的字符一次 [a-z] 匹配a-z中任意字符一次 [0-9] 匹配0-9中任意字符一次 [^a-z] 非字符a-z一次 分组 () 将数据分组匹配 (?P
#应用分组后,匹配规则优先反馈分组内的数据. 应用: re.search().group(name) 特殊符号: \d 匹配数字,[0-9] \D 匹配任何非数据[^0-9] \s 匹配任何空白字符,[\t\n\r\f\v] \S 匹配任何非空白字符,[^\t\n\r\f\v] \w 匹配任何字母数字,[a-zA-Z0-9] \W 匹配任何非字符数字[^a-zA-Z0-9] \b 匹配一个reshuffle字符边界,空格,&,#等 re 方法: import re #导入模块 re.findall() 找到匹配数据,返回一个 列表类型 re.match() 找到匹配数据,返回一个对象(包含匹配字符位置以及字符) 可以group取出数据 re.split() 找到匹配数据,已找到数据分割 re.sub() 参数:re.sub("匹配规则","替换规则",字符串,替换次数) compile方法 obj = re.compile obj.re方法(字符串) re.finditer() 将匹配到的数据转换成生成器. .__next__.group()获取数据. 练习题: 邮箱地址匹配: python - re模块(正则表达式) 标签:cab 旗舰版 区别 split 字符 ase spl 技术 match 原文地址:https://www.cnblogs.com/Anec/p/9678536.html元字符介绍:
>>> re.findall(r"\d+@(?:qq|163).com","270342229@163.comdwa1923949@qq.combfew")
[‘270342229@163.com‘, ‘1923949@qq.com‘]
>>> re.findall("aaf*","dwaadhtfhdw")
[‘aa‘]
>>> re.findall("aaf+","dwaadhtfhdw")
[]
>>> re.findall("\([^()]*\)",‘2*(3+(2*4-(9+4)))‘)
[‘(9+4)‘]
>>>
#找到最内层的括号
#在运行分组的时候千万要注意!!!!!!!!!!!!!
>>> re.findall("(abc)","abcabcabc")
[‘abc‘, ‘abc‘, ‘abc‘]
>>> re.findall("(abc)+","abcabcabc")
[‘abc‘]
>>> re.findall("(?:abc)","abcabcabc")
[‘abc‘, ‘abc‘, ‘abc‘]
>>> re.findall("(?:abc)+","abcabcabc")
[‘abcabcabc‘]
>>> >>> re.search(r"(?P
>>> obj = re.compile("\d")
>>> obj.findall("123dasda323432")
[‘1‘, ‘2‘, ‘3‘, ‘3‘, ‘2‘, ‘3‘, ‘4‘, ‘3‘, ‘2‘]
>>>
import re
#从中找到4条邮箱地址:
#识别模式:数字+@+qq|163|135.com
msg = "sdfefsefEGDFSBD234T37YCUN32JF6SC5621RKI9JSF455342229@qq.comewfjskdbfui123546165@163.comu12hjhuigyusjnef6458125646@135.comdehghsfase3267846@qq.comdhwagdshfbhagfdhsfwef"
#以列表形式返回:
email = re.findall("(\d+@(?:163|qq|135).com)",msg)
print(email)
#以单条数据返回
email2 = re.finditer("(\d+@(?:163|qq|135).com)",msg)
print(next(email2).group())
print(next(email2).group())
print(next(email2).group())
print(next(email2).group())
上一篇:java 的 抽象类、接口