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

如果它们是一两个词长,我想提取引号中的词。这适用于以下代码。


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})'"

它只会让我得到第一个提到的条件。


千万里不及你
浏览 86回答 1
1回答

HUH函数

使用您当前的模式,您可以使用捕获组和反向引用\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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python