如果它们是一两个词长,我想提取引号中的词。这适用于以下代码。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']
添加回答
举报
0/150
提交
取消
