python08--正则

来源:互联网 发布:淘宝刻假章警察会查吗 编辑:程序博客网 时间:2024/06/03 13:39
import re#正则搜索string_data = "I love Python !"data = re.search(r'I love',string_data)print(data)#<_sre.SRE_Match object; span=(0, 6), match='I love'>#字符串查找方式data = string_data.find("love")print(data)#2#匹配任意字符用'.','.'可以匹配除了换行符外的所有字符data = re.search(r'I....',string_data)print(data)#<_sre.SRE_Match object; span=(0, 5), match='I lov'>#匹配'.'使用反斜杠data = re.search(r'\.','I love python.com')print(data)#<_sre.SRE_Match object; span=(13, 14), match='.'>#匹配数字反斜杠加d  '\d'data = re.search(r'\d.\d',' I love http://www.hao123.com')print(data)#<_sre.SRE_Match object; span=(22, 25), match='123'>#匹配IP--1data = re.search(r'\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d','192.168.111.122')print(data)#<_sre.SRE_Match object; span=(0, 15), match='192.168.111.122'>#匹配IP--2#匹配元音字母 正则默认开启大小敏感 正则匹配到任意一个就算匹配成功了data = re.search(r'[aeiouAEIOU]',string_data)print(data)#<_sre.SRE_Match object; span=(0, 1), match='I'>#正则里面用'-'表示范围data = re.search(r'[a-z]',string_data)print(data)#<_sre.SRE_Match object; span=(2, 3), match='l'>data = re.search(r'[a-z]',string_data)print(data)#<_sre.SRE_Match object; span=(2, 3), match='l'>data = re.search(r'[0-9]',"I LOVE HTTP://WWW.HAO123.COM")print(data)#<_sre.SRE_Match object; span=(21, 22), match='1'>#{数字}表示匹配次数{n,m}匹配n到m次data = re.search(r'HT{2}P://WWW\.HAO123\.','I LOVE HTTP://WWW.HAO123.COM')print(data)#<_sre.SRE_Match object; span=(7, 25), match='HTTP://WWW.HAO123.'>data = re.search(r'abc{3,10}d','1abccccccdef')print(data)#<_sre.SRE_Match object; span=(1, 10), match='abccccccd'>#正则数字只有0-9,匹配的是字符188是由'1','8','8'组成#匹配的是012范围的数字+5=5data = re.search(r'[0-255]','188')print(data)#<_sre.SRE_Match object; span=(0, 1), match='1'>#匹配IP--2data = re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])',"192.168.1.107")print(data);#<_sre.SRE_Match object; span=(0, 13), match='192.168.1.107'>#"|"管道符号表示或data = re.search(r'(I love P|I love p)',"I love Python")print(data)#<_sre.SRE_Match object; span=(0, 8), match='I love P'>data = re.search(r'(I love P|I love p)',"I love python")print(data)#<_sre.SRE_Match object; span=(0, 8), match='I love p'>#"^"脱字符必须出现在匹配字符串的开头data = re.search(r'^(I love P|I love p)',"I love python")print(data)#<_sre.SRE_Match object; span=(0, 8), match='I love p'>data = re.search(r'^(love P|love p)',"I love python")print(data)#None# "$"结束符号 必须出现在字符串的结尾data = re.search(r'python$',"I love python")print(data)#<_sre.SRE_Match object; span=(7, 13), match='python'>data = re.search(r'(love P|love p)$',"I love python")print(data)#None#"()"子组#"[]" 字符串的集合,如果里面有元字符,也会失去本身的意义,仅仅是指匹配该字符#'-'表示范围 "\"表示转义字符  "^"脱字符,除了XXX都匹配(取反只能放在最前面,如果不是最前面就是匹配脱字符本身)data = re.findall(r'[a-z]',string_data)print(data)#['l', 'o', 'v', 'e', 'y', 't', 'h', 'o', 'n']data = re.findall(r'[\n]',string_data+'\n')print(data)#['\n']data = re.findall(r'[^1-9]',"I love hso123.com")print(data)#['I', ' ', 'l', 'o', 'v', 'e', ' ', 'h', 's', 'o', '.', 'c', 'o', 'm']data = re.findall(r'[1-9^]',"I love hso123.com^")print(data)#['1', '2', '3', '^']#{m,n} n<=n  匹配m到n次#{,n} 等价 {0,n}#{m} 匹配m次# "*"  ==  {0,} 匹配前面的子表达式0次或多次# "+"  == {1,}  匹配前面的子表达式1次或多次# "?"  == {0,1}  匹配前面的子表达式0次或1次# 正则默认是贪婪模式#如果想匹配"<html>" 会默认匹配所有data = re.search(r'<.+>','<html><title>I love python.com</title></html>')print(data)#_sre.SRE_Match object; span=(0, 45), match='<html><title>I love python.com</title></html>'>#重复的内容后加上"?"就是非贪婪,可以获取非重复的data = re.search(r'<.+?>','<html><title>I love python.com</title></html>')print(data)#<_sre.SRE_Match object; span=(0, 6), match='<html>'>#"\A" 匹配开始位置,类似"^"#"\Z" 匹配结束位置,类似"$"#"\b" 匹配单词边界 "\B" 匹配非单词边界data = re.findall(r'\blove\b',"i very love love lovepython.com")print(data)#['love', 'love']data = re.findall(r'\blove',"i very love love lovepython.com")print(data)#['love', 'love', 'love']data = re.findall(r'\Blove',"i very love love ilovepython.com")print(data)#['love']#"\d" 匹配[0-9]或者其它数字类型 "\D" 与"\d"其它用法相反data = re.findall(r'\d+',"i very love love ilovepython123.com")print(data)#['123']#"\s" 匹配 \t 水平制表符 \n 换行回车 \r 回车 \v 垂直制表符 或者其他制表符  "\S" 相反#"\w" 匹配unincode 单词字符、数字、下划线 "\W" 相反data = re.findall(r'\w+',"我喜欢python(i love 01 _ python_booke01.com)")print(data)#['我喜欢python', 'i', 'love', '01', '_', 'python_booke01', 'com']#正则编译成模式对象  模式对象方法直接传入字符串 模块方法第一个参数要是正则表达式p =re.compile(r'\w\w\w')data = p.search("i love python")print(data)#<_sre.SRE_Match object; span=(2, 5), match='lov'>data = p.findall("i love python")print(data)#['lov', 'pyt', 'hon']#开启BERBOSE 正则,则支持换行、z注释等
0 0
原创粉丝点击