在字符串中查找插入

Li *_*oyi 8 python regex string algorithm

检查StringA = StringB与在某个任意点插入另一个StringC的最佳方法是什么?

例如,给定abcdefabcXYZdef,我想找到abcXYZdefabcdefXYZ在第4位插入.

另一方面,给定abcdefabRSTcdXYZef,我想找到第一个字符串不能只用一次插入就变成第二个字符串.

我知道我可以从两端逐字逐句地查看StringA,并检查它是否涵盖整个StringB,但这样写起来相当繁琐.在Python(我正在工作)中执行此操作也会相当慢,我宁愿不为此编写特殊的C扩展.

我能用Regex或其他标准字符串操作函数做些聪明的事情吗?

编辑:为了澄清,StringC是完全未知的; 甚至可能没有有效的StringC,我想知道是否是这种情况.

pyr*_*ope 6

标准库中一个非常被低估的宝石是difflib......

>>> import difflib
>>> s = difflib.SequenceMatcher(None, "GHSKWITNIFSI", "GHSKWAGDITNIFSI")
>>> s.get_matching_blocks()[:-1]
[(0, 0, 5), (5, 8, 7)]
>>> s = difflib.SequenceMatcher(None, "GHSKWITNIFSI", "GHSKWITNIFSI")
>>> s.get_matching_blocks()[:-1]
[(0, 0, 12)]
Run Code Online (Sandbox Code Playgroud)

  • +1使[difflib](http://docs.python.org/library/difflib.html#sequencematcher-objects)知道,但解释如何解释结果会有所帮助 (2认同)