鱼C论坛

 找回密码
 立即注册
查看: 3611|回复: 3

[已解决]正则表达式中的一个疑惑——.match()

[复制链接]
发表于 2023-8-7 18:24:31 | 显示全部楼层
你的理解是正确的。在正则表达式中,.match()方法用于尝试从字符串的开头匹配模式,如果匹配成功,则返回一个正则匹配对象;如果不匹配,则返回None

在你的示例代码中,使用p.match(a)进行匹配时,模式\bword\b表示匹配单词"word",但它只会从字符串的开头进行匹配。你的字符串"a"以"word"开头,因此匹配成功,但如果字符串开头没有"word",那么match()将无法匹配成功,返回None

另一方面,p.sub('deed',a)用于将字符串中匹配到的部分替换为指定的内容。在你的示例中,模式\bword\b匹配到了两个"word",并使用"deed"替换了所有的匹配项。所以,输出的替换结果是将所有的"word"替换为"deed"的字符串。

需要注意的是,.sub()方法是全局替换,而.match()只匹配开头。如果你想要从整个字符串中搜索所有的匹配项,可以使用.findall()方法来实现。示例代码如下:

  1. import re

  2. a = r"swordfish I don't want to be someone that you're settling word for. I don't want to be someone that anyone settles for word"
  3. p = re.compile(r'\bword\b')
  4. m = p.findall(a)
  5. print(m)  # 输出: ['word', 'word']

  6. replaced = p.sub('deed', a)
  7. print(replaced)  # 输出: swordfish I don't want to be someone that you're settling deed for. I don't want to be someone that anyone settles for deed
复制代码


在上述代码中,使用了p.findall(a)方法来搜索整个字符串中所有匹配的项,并返回一个列表。希望能够解答你的问题,如果还有其他疑问,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-1 04:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表