re模块
#!/usr/bin/python3 # -*- coding:utf-8 -*- #Author:qika s="hello world" #字符串一般的基本操作:查找、替换、分隔 # print(s.find("llo"))#查找某字符 # ret =s.replace("ll","xx")#替换某值为某值 # print(ret) # print(s.split("w"))#以什么为中间分隔线,分隔为两端 #正则表达式 #匹配-->字符串的 #re 模块使 Python 语言拥有全部的正则表达式功能。re模块有3个可使用的方法: # re.findall方法 # 作用: # 在字符串中找到正则表达式所匹配的"所有子串",返回一个列表 # 如果没有找到匹配的,则返回空列表 #re.match函数 #作用: # 从字符串的起始位置匹配一个, # 如果不是起始位置匹配成功的话,match()就返回none # re.search方法 # 作用: # 扫描整个字符串并返回第一个成功的匹配。返回一个对象,对象可以调用group()返回结果 #下面是使用格式和一些常用方法: # 语法格式为: # re.findall(pattern, string, flags=0) # 或 # pattern.findall(string[, pos[, endpos]]) # 参数: # pattern 匹配模式。 # string 待匹配的字符串。 # pos 可选参数,指定字符串的起始位置,默认为 0。 # endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。 #例: import re # res = re.findall("qika","qwqikaeqweqweqika123asdqwkeqweqweq") # print(res)#返回结果:['qika']--->>完全匹配 #重要的2元字符: # . 一个点: # 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 # res=re.findall("w.d","hello wod") # print(res) #打印结果:['wod'],一个点.只能代替一个字符 # ^ 一个向上的尖符号:匹配字符串的开头 # res=re.findall("^he...","hello wod") # print(res)#返回结果:['hello']-->使用^尖角符号匹配he开头的,三个点表示匹配he后面任意三个字符 # $ 匹配字符串的末尾 # res=re.findall(".....qika$","helloqika") # print(res)#结果:['helloqika']--->$符号表示匹配qika结尾的字符串,前面五个点表示匹配任意五个字符,只要结尾是qika的就可 # * 匹配0个或多个 # res=re.findall("ab*","abcdefgaba") # print(res)#结果:['ab', 'ab', 'a']--->* 即表示匹配前面给出字符所有的字符结果,只要有 # + 匹配1个或多个 # res=re.findall("ab+","abcdefgasasqq") # print(res)#结果:['ab'] -->+表示找满足前面的一个或多个,否则返回空列表 # ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 # res=re.findall("b?c","aaabbcdefgasasqq") # print(res)#结果:['bc'] -->b?c 表示匹配?问号前面的b且后面是c的,那么只有一个满足 # {} 匹配n个前面表达式 # res =re.findall("a{3}b","aaaaaaaaaaaab")#最多3个 # res =re.findall("a{1,3}b","aaaaaaaaaaaab")#1到3个 # print(res) #结果:['aaab']------>{}大括号,表示按照括号里面最大数字来匹配前面的字符 #========================================== #总结一下:推荐使用这三个!!! # *(0或多个) # +(1或多) # ?(0或1) # [] 字符集 # res=re.findall("a[a,c]b","acb") # print(res)#['acb'] -->表示用[]里面的内容去匹配字符内容,匹配到并返回 # res=re.findall("[1-9,a-z,A-Z]","123abAB") # print(res)#['1', '2', '3', 'a', 'b', 'A', 'B'] #另:如果一个尖角符号加上中括号[],就是取反!!! # res=re.findall("[^he]","helloworld") # print(res)#['l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'] 尖角符号加上中括号[],作用:取反 # \ #反斜杠 后面跟元字符,去除特殊功能 #反斜杠 后面跟普通字符,实现特殊功能 # \d 匹配任何十进制数,相当于[0-9] # \D 匹配任何非数字字符,相当于[^0-9] # \s 匹配任何空白字符,相当于[ \t\n\r] # \S 匹配任何非空白字符,相当于[^ \t\n\r] # \w 匹配任何字母数字字符,相当于[a-zA-Z0-9] # \W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9] # \b 匹配一个特殊字符的边界,相当于指单词和空格间的位置(如果是普通字符那么就匹配不到) #实例: # print(re.findall("\d{3}","123aaaqwed")) #\d{3} 指匹配任何三位十进制数 # print(re.findall("\sabc","abc def")) # print(re.findall("\w","abc123")) #直接使用\w 表示匹配所有字符数字字符['a', 'b', 'c', '1', '2', '3'] # print(re.findall(r"I\b","hello world,I am fine")) #结果:# ['I'] # 原因:\b放要匹配的字符前或者后,则需看前后是什么字符: # 是普通的字符aA1这些,那么就匹配不到, # 如果是空格,或者其他#$%这些特殊符号,那么就可以正常匹配到 ############################## # | # () # print(re.search("(as)+","asaswefwf").group())#re.search 匹配第一个符合的 #例: # res = re.search("(?P<id>\d{3})","weeew34ttt123/ooo") # print(res.group()) # print(res.group("id"))#结果:123 --->>必须跟上.group()表示分组输出 #另:(?P<id>\d{3}) 这是固定格式,其中的?P<id> 表示自己命名,主要还是看\d{3} #因为如果要给取出的值命名,那就这样做。