1 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果模式中存在一個(gè)或多個(gè)捕獲組,則返回組列表;如果模式有多個(gè)組,這將是一個(gè)元組列表。
您的正則表達(dá)式包含一個(gè)捕獲組,因此findall
永遠(yuǎn)不會(huì)為[A-Z]
正則表達(dá)式返回任何內(nèi)容。更改([a-u]|[w-z])
為(?:[a-u]|[w-z])
查看差異:
>>> this_WFF = "(P) & ~(~(Q → (R & ~S)))"
>>> def clean(formula):
... formula = formula.strip()
... formula = re.sub("\( +", "(", formula)
... formula = re.sub(" +\)", ")", formula)
... formula = re.sub("(?P<b_ops>[&v→?])", " " + "\g<b_ops>" + " ", formula)
... formula = re.sub("[ ]+", " ", formula)
... # Make an inventory of literals for the original formula.
... orig_lit_inv = re.findall("[~]*[A-Z]([a-u]|[w-z]){0,}", formula)
... print(orig_lit_inv)
...
>>> clean(this_WFF)
['', '', '', '']
>>> def clean(formula):
... formula = formula.strip()
... formula = re.sub("\( +", "(", formula)
... formula = re.sub(" +\)", ")", formula)
... formula = re.sub("(?P<b_ops>[&v→?])", " " + "\g<b_ops>" + " ", formula)
... formula = re.sub("[ ]+", " ", formula)
... # Make an inventory of literals for the original formula
... orig_lit_inv = re.findall("[~]*[A-Z](?:[a-u]|[w-z]){0,}", formula)
... print(orig_lit_inv)
...
>>> clean(this_WFF)
['P', 'Q', 'R', '~S']
由于現(xiàn)在正則表達(dá)式不包含捕獲組findall,因此只需在結(jié)果中返回“組 0”(即整個(gè)匹配項(xiàng))的內(nèi)容。
添加回答
舉報(bào)