Python 正则

来源:互联网 发布:网络信息发布规定 编辑:程序博客网 时间:2024/06/03 16:40
# -*- coding=utf-8 -*-import re# search('正则表达式','需要匹配的字符串')   扫描整个字符串并返回第一个成功的匹配s = '1234qwer'm = re.search('[0-9]',s)# group()方法 查看搜索到的结果print(m.group())# re.match('正则表达式','需要匹配的字符串')   从头开始检查字符串是否符合正则表达式。必须从字符串的第一个字符开始就相符。s = '5234qwer'm = re.match('[0-9]',s)print(m.group())# str = re.sub('正则表达式','替换的字符串','需要匹配的字符串') s = '5234qwer'm = re.sub('5','1',s)print(m)# re.split('正则表达式','需要匹配的字符串','拆分次数') 根据正则表达式分割字符串, 将分割后的所有子字符串放在一个表(list)中返回s = 'hello,hello,hello.'m = re.split('\W+',s)m2 = re.split('\W+',s,1)print(m) # 结果['hello', 'hello', 'hello', '']print(m2) # 结果 ['hello', 'hello,hello.']# re.findall('正则表达式','需要匹配的字符串') 根据正则表达式搜索字符串,将所有符合的子字符串放在一给表(list)中返回s = '1o2o3o4o5'm = re.findall('\d',s)print(m) # 结果['1', '2', '3', '4', '5']# re.finditer('正则表达式','需要匹配的字符串') 根据正则表达式匹配的所有子串,并把它们作为一个迭代器返回,如果无匹配,返回空列表s = '1o2o3o4o5'm = re.finditer('\d',s)for match in m:print(match.group())pass# re.compile() 把正则表达式编译成一个正则表达式对象,提高重用率s = '1o2o3o4o5'c = re.compile('\d')m = c.findall(s)print(m)# MatchObject 实例方法和属性--------------------------------------------------------------------------------------------------s = 'qwer1234's = '010-12345678'c = re.compile("^010-?\d{8}$")m = re.search('[0-9]',s)# 返回被 RE 匹配的字符串 如:返回1print(m.group())# 返回匹配开始的位置 如:4print(m.start())# 返回匹配结束的位置 如:5print(m.end())# 返回一个元组包含匹配 (开始,结束) 的位置 如:(4,5)print(m.span())# 单个字符------------------------------------------------------------------------------------------------------------------s = 'hello 888 world'# . 匹配任意一个字符c = re.compile('.')# | 匹配或 c = re.compile('h|w')# [] 匹配列表内容 如:匹配[0-4]范围,匹配[a-z]范围,匹配[o8w]字符串c = re.compile('[o8w]')# [^] 匹配列表内容相反的 如:匹配[^8]c = re.compile('[^8]')# \s 匹配一个空格 如:[' ', ' ']c = re.compile('\s')# \S 匹配一个非空格 如:['h', 'e', 'l', 'l', 'o', '8', '8', '8', 'w', 'o', 'r', 'l', 'd']c = re.compile('\S')# \d 匹配[0-9]数字 如:['8', '8', '8']c = re.compile('\d')# \D 匹配不是[^0-9]数字的 如:['h', 'e', 'l', 'l', 'o', ' ', ' ', 'w', 'o', 'r', 'l', 'd']c = re.compile('[^0-9]')# \w 匹配[0-9a-zA-Z] 如:['h', 'e', 'l', 'l', 'o', '8', '8', '8', 'w', 'o', 'r', 'l', 'd']c = re.compile('[0-9a-zA-Z]')# \W 匹配不是[^0-9a-zA-Z]的  如:[' ', ' ']c = re.compile('[^0-9a-zA-Z]')# 重复 紧跟在单个字符之后,表示多个这样类似的字符-----------------------------------------------------------------------# * 重复 >=0 次 如:返回为['a'],d可以出现0次或者更多次s = 'acccc'c = re.compile('ad*')# + 重复 >=1 次 如:返回为空[],d至少出现一次或者更多次s = 'acccc'c = re.compile('ad+')# ? 重复 0或者1次 如:['010-12345678']s = '010-12345678'c = re.compile("^010-?\d{8}$")# {m} 重复m次 如:m是3次就必须出现3次s = '010--12345678'c = re.compile("^010-{3}\d{8}$")# {m,n} 重复m到n次 如:{1,5} 最少一次,最多5次,其他都不匹配s = '010-12345678'c = re.compile("^010-{1,5}\d{8}$")# ^ 起始位置 $ 终止位置s = '010-12345678'c = re.compile("^010-?\d{8}$") # + 贪然模式 就是能有多少拿多少 如:['abbbbbbbbbbbb', 'abbb', 'abbb']s = 'abbbbbbbbbbbb abbb aaabbb'c = re.compile("ab+")# +? 非坦然模式 如:['ab', 'ab', 'ab']s = 'abbbbbbbbbbbb abbb aaabbb'c = re.compile("ab+?")# 编译标志--------------------------------------------------------------------------------------------------------# IGNORECASE, I (re.I) 使匹配对大小写不敏感s = "Hello,World"c = re.compile("hello",re.I)# DOTALL, S (re.S) 使.匹配包括换行在内的所有字符 如:['Hello\nWorld']s = "Hello\nWorld"c = re.compile(".+",re.S)# MULTILINE, M (re.M) 多行匹配,影响 ^ 和 $s = """a123 b123b123 a123a123 c123c123 a123"""c = re.compile("^a123",re.M)# VERBOSE, X (re.X) 正则多行匹配s = "010-12345678"c = re.compile(r"""\d{3}-?\d{8}""",re.X)# LOCALE, L (re.L)做本地化识别(locale-aware)匹配m = re.findall(c,s)print(m)


0 0
原创粉丝点击