为了账号安全,请及时绑定邮箱和手机立即绑定

如何用正则表达式同时搜索两个可能的引号?

如何用正则表达式同时搜索两个可能的引号?

千万里不及你 2022-04-23 16:51:59
如果它们是一两个词长,我想提取引号中的词。这适用于以下代码。mysentences = ['Kids, you "tried" your "best" and you failed miserably. The "lesson" is, "never try."',                "Just because I don’t 'care' doesn’t mean I don’t understand."]quotation = []rx = r'"((?:\w+[ .]*){1,2})"' for sentence in mysentences:    quotation.append(re.findall(rx, sentence))print(quotation)但这并没有让我从第二句中得到“关心”,因为第二句用双引号引起来。我可以通过以下方式获得它r"'((?:\w+[ .]*){1,2})'"问题是,我怎样才能加入条件?和rx = r'"((?:\w+[ .]*){1,2})"' or r"'((?:\w+[ .]*){1,2})'"它只会让我得到第一个提到的条件。
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

使用您当前的模式,您可以使用捕获组和反向引用\1来匹配随附的单引号或双引号。

比赛现在将在第二个捕获组中。

(['"])((?:\w+[ .]*){1,2})\1

正则表达式演示

请注意,重复字符类[ .]*也可能匹配例如never try... ....

如果要匹配 1 或 2 个单词,其中末尾可以有一个可选点,则可以匹配 1+ 个单词字符后跟一个可选组以匹配 1+ 个空格和 1+ 个单词字符后跟一个可选点。

(['"])(\w+(?: +\w+)?\.?)\1

正则表达式演示

例如

import remysentences = ['Kids, you "tried" your "best" and you failed miserably. The "lesson" is, "never try."',               "Just because I don’t 'care' doesn’t mean I don’t understand."]quotation = []rx = r"(['\"])((?:\w+[ .]*){1,2})\1"for sentence in mysentences:    for m in  re.findall(rx, sentence):
        quotation.append(m[1])print(quotation)

结果

['tried', 'best', 'lesson', 'never try.', 'care']


查看完整回答
反对 回复 2022-04-23
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号