认识正则表达式(二)

摘要:

        re.compile()的使用介绍与re.search()使用的介绍,获取字符串中匹配

例子:

2020-05-20 统计5月份我司在美国泳装的销售额共计360000美元,其中款式为SJ2580的泳装销售量最高。

这句话可能没什么逻辑,但是作为例子来认识以下正则表达式吧

1、re.compile()生成正则表达式对象

通过re.compile()可以将正则表达式转换成正则表达式对象,这里要区分以下正则表达式与正则表达式对象,正则表达式:是我们需要传入re.compile的参数,正则表达式对象:是re.compile的返回,通过返回的正则表达式对象,可以使用不同的方法来匹配文本

实例如下:

text = "2020-05-20 统计5月份我司在美国泳装的销售额共计360000美元,其中款式为SJ2580的泳装销售量最高。"
pattern = re.compile(r"\d{4}-\d{2}-\d{2}")

这里的\d用来指代数字,花括号{}中的数字代表出现的次数,连在以前就是数字出现的次数,中间用横杆-连接,整体的意思就是:4个数字-2个数字-2个数字对比文本text哪个符合这个规律,对就是年月日:2020-05-20,所以这段代码的目的就是生成年月日的正则表达式对象,而"\d{4}-\d{2}-\d{2}"就是正则表达式。

ps:r"\d{4}-\d{2}-\d{2}" 这里的r 代表的是原始字符串的意思,使得'\'不再代表转义字符。

2、寻找正则表达式的匹配search()方法

通过上述的compile()生成的Regex对象即(正则表达式对象),可以通过调用search的方法来查找符合该正则表达式的所有匹配,其中search()就是其中之一的方法。

search()是扫描整个字符串并返回第一个与表达式相匹配的结果,如果没有找到就会返回None。

如何使用?

还是采用上面的例子,首先来列一下我们需要明确的一些点:

a:需要匹配的字符串是什么?

b:你需要匹配的字符串具有什么样的结构?这就影响你需要编辑什么样的正则表达式。

c:根据正则表达式生成正则表达式对象

d:根据正则表达式匹配字符串输出匹配结果

接下来我们来看代码:

    # a:明确需要匹配的字符串
    text = "2020-05-20 统计5月份我司在美国泳装的销售额共计360000美元,其中款式为SJ2580的泳装销售量最高。"
    # b、c 需要查找的字符串类型是年-月-日,根据字符串类型编写正则表达式,compile()生成正则表达式
    pattern = re.compile(r"\d{4}-\d{2}-\d{2}")
    # d 查找匹配的结果并输出 search()
    res = pattern.search(text)
    print(res)

pattern是生成的正则表达式对象,用正则表达式对象.search()的方法来实现匹配,search传入需要匹配的字符串作为参数,返回的res是匹配的Match对象,结果如下:

<re.Match object; span=(0, 10), match='2020-05-20'>

结果中的match就是匹配到的结果,而span代表的是他出现再字符穿的起始位置与结束位置;

如果没有匹配到输出结果就是None;

如果需要输出完整的匹配结果,可以使用res.group()的方法输出,采用group()的输出代码与结果如下图所示:

    # a:明确需要匹配的字符串
    text = " 2020-05-20统计5月份我司在美国泳装的销售额共计360000美元,其中款式为SJ2580的泳装销售量最高。"
    # b、c 需要查找的字符串类型是年-月-日,根据字符串类型编写正则表达式,compile()生成正则表达式
    pattern = re.compile(r"\d{4}-\d{2}-\d{2}")
    # d 查找匹配的结果并输出 search()
    res = pattern.search(text)
    print(res.group())
输出结果:2020-05-20

具体有关group的使用会在后面较为详细的解释其用法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值