我有一個(gè) Python 字符串列表。我想對(duì)每個(gè)元素進(jìn)行正則表達(dá)式搜索,只過濾那些我設(shè)法捕獲正則表達(dá)式組的元素。我想我只能使用 Python 3.8 中的海象運(yùn)算符進(jìn)行一次正則表達(dá)式搜索。到目前為止我有:attacks = [match for attack in attacks if (match := re.search(r"(\([0-9]+d[\s\S]+\))", attack).group() is not None)]邏輯是:如果正則表達(dá)式搜索返回任何內(nèi)容,我將找到找到的組,這意味著它不是無。問題是,行為很奇怪——我可以print()在這個(gè)列表理解之前,程序以代碼 0 結(jié)束,但是沒有結(jié)果,并且print()在列表理解之后不起作用。我究竟做錯(cuò)了什么?編輯:完整代碼:text = "Speed 30 ft. Melee short sword +3 (1d6+1/19-20) Ranged light crossbow +3 (1d8/19-20) Special Attacks sneak attack +1d6 Spell-Like Abilities (CL 1st) "if attacks: attacks = attacks.group().split(")") attacks = [match for attack in attacks if (match := re.search(r"(\([0-9]+d[\s\S]+\))", attack).group() is not None)]
用于在列表理解中過濾正則表達(dá)式搜索的海象運(yùn)算符
墨色風(fēng)雨
2023-05-23 14:41:41