擅长:python、mysql、java
<p>如果我正确理解您问题的意图,您可以使用以下代码:</p>
<pre><code>>>> import re
>>> mystring = 'AAAABBAAABBAAAACCAAAACCAAAA'
>>> String_A = 'BB'
>>> String_B = 'CC'
>>> def find_occurrences(s, a, b):
a_is = [m.start() for m in re.finditer(re.escape(a), s)] # All indexes of a in s
b_is = [m.start() for m in re.finditer(re.escape(b), s)] # All indexes of b in s
result = [s[i:j+len(b)] for i in a_is for j in b_is if j>i]
return result
>>> find_occurrences(mystring, String_A, String_B)
['BBAAABBAAAACC', 'BBAAABBAAAACCAAAACC', 'BBAAAACC', 'BBAAAACCAAAACC']
</code></pre>
<p>这将使用从<a href="https://stackoverflow.com/a/4664889/637284">this answer</a>查找子字符串代码的所有匹配项</p>
<p>在其当前形式中,代码不适用于重叠的子字符串,如果<code>mystring = 'BBB'</code>并且您查找子字符串<code>'BB'</code>,它只返回索引0。如果您想考虑这种重叠的子字符串,请将获取子字符串索引的行更改为<code>a_is = [m.start() for m in re.finditer("(?={})".format(re.escape(a)), s)]</code></p>