正则表达式re模块中常用的功能函数

ps:re.match() 与re.search()还有re.findall()区别

  • re.match只匹配字符串的开始,
  • re.search匹配整个字符串,返回第一个匹配结果,
  • re.findall整个字符串,返回所有的匹配结果。
s = '__webrobot_processMsg({"robotId":"webbot","userId":"fbc2cbaf30014366badf143cc9cda4d4","sessionId":"0a5bc4ef69f64a609812ebf477d8b104","type":"openresp","body":{"status":1}});__webrobot_processMsg({"robotId":"webbot","userId":"fbc2cbaf30014366badf143cc9cda4d4","sessionId":"0a5bc4ef69f64a609812ebf477d8b104","type":"updaterobot","body":{"displayName":"小i机器人"}});__webrobot_processMsg({"robotId":"webbot","userId":"fbc2cbaf30014366badf143cc9cda4d4","sessionId":"0a5bc4ef69f64a609812ebf477d8b104","type":"ex","body":{"name":"initconfig","data":{"homeP4Path":"home/index.html","inputPrompt":"请在这里输入您的消息","helpP4Path":"http://www.xiaoi.com","messageDateFormat":"HH:mm:ss","speechAddr":"","dn":"小i机器人","speechEnabled":"false"}}});__webrobot_processMsg({"robotId":"webbot","userId":"fbc2cbaf30014366badf143cc9cda4d4","sessionId":"0a5bc4ef69f64a609812ebf477d8b104","type":"txt","body":{"fontStyle":0,"fontColor":0,"content":"Hi,我是小i机器人,我可以查天气,讲笑话,订机票哦~ 除此之外还有几十项实用好玩的功能哦~ 快来试试吧\\n\\r\\n","emoticons":{}}});__webrobot_processMsg({"robotId":"webbot","userId":"fbc2cbaf30014366badf143cc9cda4d4","sessionId":"0a5bc4ef69f64a609812ebf477d8b104","type":"txt","body":{"fontStyle":0,"fontColor":0,"content":"广东今天22℃~30℃ 多云转中到大雨 8-9级 20.8~24.4m/s\\r\\n适合穿T恤、短薄外套等夏季服装。\\r\\n","emoticons":{}}});'

1. complie()

  • 编译正则表达式模式,返回一个对象模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样做的目的为了提高一点效率)
  • 格式:
    re.complie(pattern,flags=0)
    pattern:编译时用的表达式字符串
    flags:编译标志位,用于修改正则表达式的匹配方式,如是否区分大小写,多行匹配等等。

2.match()

  • 决定re是否在字符串的开始的位置进行匹配 注意:这个方法并不是完全匹配,当pattern结束时若string还有剩余字符,仍然视为匹配成功
    想要完全匹配可以在表达式末尾添加边界匹配符“$” 语法: re.match(pattern,string,flags=0)

3.search()函数

  • 语法:
  • re.search(pattern,string,flags= 0)
    re.search函数会在字符串中查找模式匹配,只要找到第一个匹配然后返回,若没有找到匹配则返回None
>> re.search(r'"content":"(.*?)\\r\\n",', s)    # 若无结果 返回空, 有结果,只返回第一次匹配到的结果
<< re.Match object; span=(905, 976), match='"content":"Hi,我是小i机器人,我可以查天气,讲笑话,订机票哦~ 除此之外还有几十项实>
>> re.search(r'"content":"(.*?)\\r\\n",', s).group()  # 输出结果带条件
<< '"content":"Hi,我是小i机器人,我可以查天气,讲笑话,订机票哦~ 除此之外还有几十项实用好玩的功能哦~ 快来试试吧\\n\\r\\n",'
>> re.search(r'"content":"(.*?)\\r\\n",', s).group(1)   # 输出结果不带条件
<< 'Hi,我是小i机器人,我可以查天气,讲笑话,订机票哦~ 除此之外还有几十项实用好玩的功能哦~ 快来试试吧\\n'

4.findall()

  • re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表
  • 语法:
    re.findall(pattern,string,flag=0)
>> re.findall(r'"content":"(.*?)\\r\\n",', s)    # 若无结果 返回空列表 []
<< ['Hi,我是小i机器人,我可以查天气,讲笑话,订机票哦~ 除此之外还有几十项实用好玩的功能哦~ 快来试试吧\\n',
 '广东今天22℃~30℃ 多云转中到大雨 8-9级 20.8~24.4m/s\\r\\n适合穿T恤、短薄外套等夏季服装。']
>> re.findall(r'"content":"(.*?)\\r\\n",', s) [1]
<<  '广东今天22℃~30℃ 多云转中到大雨 8-9级 20.8~24.4m/s\\r\\n适合穿T恤、短薄外套等夏季服装。'

5.finditer()

  • 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器,找到RE匹配的所有子串,并把他们作为一个迭代器返回。
  • 语法:
    re.finditer(pattern,string,flags=0)

6.split()

  • 按照能够匹配子串将string分割后返回列表
    可以使用re.split来分割字符串。
    语法:
    re.split(pattern,string[,maxsplit])
    maxsplit用于指定最大的分割次数,若不指定则全部分割。

    import re
    #以数字分割字符串
    print(re.split(’\d+’,‘one1two2123three323213four4five5’))
    #执行结果如下:
    #[‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘’]

7.sub()

  • 使用re替换string中每一个匹配的子串后返回替换后的新串。
  • 语法:
  • re.sub(pattern,repl,string,count)
    参数一:要匹配的字符串,
    参数二:要替换的字符串
    参数三:要匹配的内容 参数四:指定替换的个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值