我正在尝试在一串 PL/FOL 公式中构建文字列表,并且相关的代码正在查找匹配项,但将它们作为空白返回。
我试过re.escape(formula)了,什么也没做。我也尝试过该findall模式的简单变体,但它们随后会生成空列表。
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)
this_WFF = "(P) & ~(~(Q → (R & ~S)))"
clean(formula=this_WFF)
当我打印结果时,我得到['', '', '', '']. 换句话说,它正在查找匹配项,但返回空白字符串作为匹配项,此时它至少应该返回[A-Z]. 以this_WFF作为参数,clean(formula)应该打印['P', 'Q', 'R', '~S'].
凤凰求蛊
相关分类