首页 > 其他 > 详细

re正则匹配之re.search()

时间:2021-09-13 10:10:46      阅读:24      评论:0      收藏:0      [点我收藏+]

 前言

re.search扫描整个字符串并返回第一个成功的匹配。re.findall返回字符串中所有不重叠匹配项的列表,如果没有匹配到返回空list不会报错。
search匹配对象有3个方法:group() groups() groupdict() ,这3个方法使用上会有一些差异。
如果只需匹配一个,匹配到就结束就用search,匹配全部就用findall

re.search(pattern,string,flags = 0 )

search扫描整个字符串并返回第一个成功的匹配,如果没匹配到返回None
函数参数说明:

  • pattern 匹配的正则表达式
  • string 要匹配的字符串。
  • flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

 

import  re

#基础写法一 
kk=re.compile(\d+)
result=kk.search(123abc456)
print(result) #<re.Match object; span=(0, 3), match=‘123‘>

#基础写法二 注意此处search()的用法,可传两个参数
kk=re.compile(\d+)
result=re.search(kk,123abc456)
print(result) #<re.Match object; span=(0, 3), match=‘123‘>

#基础写法三 也可以直接在search传2个参数
result=re.search(\d+,123abc456)
print(result) #<re.Match object; span=(0, 3), match=‘123‘>
print(result.group()) #123

group()的使用

group(0) 是获取取得的字符串整体,group(1)是取出括号里面我们要匹配的内容
group(0)和group()效果相同,均为获取取得的字符串整体

group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。如果没匹配到返回的是None,调用group(1)方法会抛异常

示例1

import re

# 取出url地址
a = 百度地址:www.baidu.com,欢迎使用!!!
res = re.search(百度地址:(.*?),欢迎, a)
print(res)  # 返回match对象 <re.Match object; span=(0, 21), match=‘百度地址:www.baidu.com,欢迎‘>
print(res.group(1)) # www.baidu.com

如果匹配到返回一个Match object对象,用group(1)取出匹配的值。

如果没匹配到返回的是None,调用group(1)方法会抛异常

import re

# 取出url地址
a = 百度地址:www.baidu.com,欢迎使用!!!
res = re.search(百度地址11111111:(.*?),欢迎, a)
print(res)  # 返回match对象 <re.Match object; span=(0, 21), match=‘百度地址:www.baidu.com,欢迎‘>
print(res.group(1)) # www.baidu.com

技术分享图片

 

 如果整个字符串中,有多个值需要匹配,想同时取出,请看以下例子

import re

# 取出url地址
a = 百度地址:www.baidu.com,微博地址:www.weibo.com,欢迎使用!!!
res = re.search(百度地址:(.*?),微博地址:(.*?),欢迎, a)
print(res)  # <re.Match object; span=(0, 40), match=‘百度地址:www.baidu.com,微博地址:www.weibo.com,欢迎‘>
print(res.group()) #  百度地址:www.baidu.com,微博地址:www.weibo.com,欢迎
print(res.group(0)) # 百度地址:www.baidu.com,微博地址:www.weibo.com,欢迎
print(res.group(1)) # www.baidu.com
print(res.group(2)) # www.weibo.com
print(res.group(0,1,2)) # (‘百度地址:www.baidu.com,微博地址:www.weibo.com,欢迎使用!!!‘,‘www.baidu.com‘, ‘www.weibo.com‘)

以上例子可以看出:

  • group() 跟group(0)一样是获取匹配的整个字符串
  • group(1) 取出匹配的第一个值
  • group(2) 取出匹配的第二个值
  • group,0,1, 2) 同时取出上面对应的2个值,返回元祖

 

re正则匹配之re.search()

原文:https://www.cnblogs.com/lvhuayan/p/15259335.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!