Python re模块方法

本文介绍了Python的re模块,包括re.match、re.search、re.split等方法的使用,详细解释了Match对象的属性和方法,并提供了re.sub和re.subn的替换功能。此外,还提到了re模块的两种调用方式。
摘要由CSDN通过智能技术生成

摘抄自网上,测试笔记
jupyter 5.6.0 + python 3.7.0

在python中,
字符串前的 r 表示 raw,即这是一个raw string。
raw string的意思是,此字符串中的 \n \b \r … 等转义符号,就不进行转义了

re.match(pattern, string[, flags])

这个方法将会从 string(我们要匹配的字符串)的开头开始,尝试匹配 pattern,一直向后匹配,如果遇到无法匹配的字符,立即返回 None,如果匹配未结束已经到达 string 的末尾,也会返回 None。两个结果均表示匹配失败,否则匹配 pattern 成功,同时匹配终止,不再对 string 向后匹配。

import re
# 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串”
pattern = re.compile(r'hello')
# 使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
result1 = re.match(pattern,'hello')
result1.group()
'hello'
result2 = re.match(pattern,'helloo abc!')
result2.group()
'hello'
result3 = re.match(pattern,'helo abc!')  # 无法匹配成功,返回None,没有 group() 属性
result3.group()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-23-34b004ad0e7f> in <module>()
      1 result3 = re.match(pattern,'helo abc!')  # 无法匹配成功,返回None,没有 group() 属性
----> 2 result3.group()


AttributeError: 'NoneType' object has no attribute 'group'
if result3:
    print(result3.group())
else:
    print('匹配失败')
匹配失败

Match对象是一次匹配的结果,
包含了很多关于此次匹配的信息,可以使用 Match 提供的可读属性或方法来获取这些信息。

属性:

  1. string: 匹配时使用的文本。

  2. re: 匹配时使用的 Pattern 对象。

  3. pos: 文本中正则表达式开始搜索的索引。值与 Pattern.match() 和 Pattern.seach() 方法的同名参数相同。

  4. endpos: 文本中正则表达式结束搜索的索引。值与 Pattern.match() 和 Pattern.seach() 方法的同名参数相同。

  5. lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为 None。

  6. lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为 None。

方法:

  1. group([group1, …]):
    获得一个或多个分组截获的字符串;
    指定多个参数时将以元组形式返回。
    group1 可以使用编号也可以使用别名;
    编号 0 代表整个匹配的子串;
    不填写参数时,返回 group(0);
    没有截获字符串的组返回 None;
    截获了多次的组返回最后一次截获的子串。

  2. groups([default]):
    以元组形式返回全部分组截获的字符串;
    相当于调用 group(1,2,…last)
    default 表示没有截获字符串的组以这个值替代,默认为 None。

  3. groupdict([default]):
    返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。
    default 含义同上。

  4. start([group]):
    返回指定的组截获的子串在 string 中的起始索引(子串第一个字符的索引)。
    group 默认值为 0。

  5. end([group]):
    返回指定的组截获的子串在 string 中的结束索引(子串最后一个字符的索引+1)。
    group 默认值为 0。

  6. span([group]):
    返回 (start(group), end(group))。

  7. expand(template):
    将匹配到的分组代入 template 中然后返回。
    template 中可以使用 \id 或 \g;
    \g 引用分组,但不能使用编号 0。
    \id 与 \g 是等价的;
    但 \10 将被认为是第 10 个分组,如果你想表达 \1 之后是字符’0’,只能使用 \g0。

# 匹配如下内容:单词+空格+单词+任意字符
m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello world!')

print("m.string:", m.string)
print
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值