python正则表达式

一、re模块

  • \s:匹配任意空白字符

  • +:与之紧邻的元素出现一次或者多次

  • *:与之紧邻的元素出现任意次,或者不出现

  • ?:与之紧邻的元素出现0或者1次

二、实例

1)re.match():match开头,if group,忽略

import re
s = 'what are you doing are?'
if re.match('are',s):
    print "touched"
#匹配不到
 
if re.match('what', s):
    print "touched"
#能匹配到,因为开头是what
 
#group
a = re.match('what', s)
a.group()
#'what',开头匹配到what,则a.group()就返回what
 
#若开头没匹配到what,则a为空,调用a.group()会报错

还可以忽略大小写:

import re
if re.match('gene',"Gene_name",re.IGNORECASE):
       print('yes')

2)re.search():search中间,if group

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import re
s = 'what are you doing are?'
if re.search('are',s):
    print "touched"
#用search就可以匹配中间的字符了

获取匹配结果:

#如果想获取匹配的结果,group()就派上用途了
target = '<strong>115</strong>'
re.search('(>)([0-9]*)(<)',target).group(1)
#'>'
re.search('(>)([0-9]*)(<)',target).group(2)
#'115'
re.search('(>)([0-9]*)(<)',target).group(3)
#'<'
re.search('(>)([0-9]*)(<)',target).group(0)
#'>115<'
'''
1.group() 同group(0)就是匹配正则表达式整体结果
2.group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分
'''

3)re.findall():返回列表

import re
content = 'Hello 123456789 Word_This is just a test 666 Test'
results = re.findall('\d+', content)
print(results)
#['123456789', '666']
#如果没有匹配到,则返回空

4)re.sub():字符串替换

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import re
line = '帮同事订的,以下是他给我反馈:It was excellent and I can recommend it to anyone else to stay there'
>>> re.sub('[a-zA-Z0-9]', '', line)
#'帮同事订的,以下是他给我反馈:             '
 
import re
s = 'movies of the summer.<br /><br />Robin Williams'
 
re.sub('<[^>]*>', '', s)
#'movies of the summer.Robin Williams'

5)re.finditer():获取匹配到的关键词的所有下标

import re
s = '奥迪你把奥迪厉害宝马奥迪奥'
pattern = re.compile('奥迪')
result = pattern.finditer(s)
for each in result:
    print(each.span())
posted @ 2022-10-07 20:35  I'm_江河湖海  阅读(5)  评论(0)    收藏  举报