如果它們是一兩個詞長,我想提取引號中的詞。這適用于以下代碼。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
提交
取消