答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
Python std lib包含一个diff模块difflib。这是你的问题:
>>> import difflib
>>> f1 = "111xxx222"
>>> f2 = "111yyy222"
>>> sm = difflib.SequenceMatcher(a=f1, b=f2)
>>> diff_re = ''
>>> for a,b,n in sm.get_matching_blocks():
... if not n: continue
... if diff_re: diff_re += "(.*)"
... diff_re += f1[a:a+n]
...
>>> print diff_re
'111(.*)222'
答案 4 :(得分:0)
我认为这是一个非常有趣的问题,特别是如果将其推广为“给定N个字符串,找到最匹配的最简单,最具限制性的正则表达式R”。在给出的测试数据中,这可能会产生无用的答案,如“111(xxx | yyy)222”,因此可能需要对问题进行微调。
这听起来像是一个纯粹的compsci问题,应该有一篇关于它的论文......