擅长:python、mysql、java
<p>您描述的正则表达式是</p>
<pre><code>(a(b(a(b?)?)?)?
</code></pre>
<p>您可以根据您的模式动态构建它:</p>
<pre><code>import re
pattern = 'abab'
search_str = 'abb'
# Construct the regexp that I mentioned above
regexp = ''
for c in reversed(pattern):
regexp = '(%s%s)?' % (re.escape(c), regexp)
m = re.match(regexp, search_str)
print 'Result is %r' % m.group(0)
</code></pre>
<p>这是假设您真的想使用正则表达式。其他答案都有很好的解决方案,无需重新考虑。你知道吗</p>
<p>也可以在谷歌上搜索“最长的公共字符串前缀”。你知道吗</p>
<p><strong>更新:</strong>regexp错误(有点颠倒),修复了它。你知道吗</p>