擅长:python、mysql、java
<p>好吧,如果我明白你说的,你只想写:</p>
<pre><code>def match_on_list_of_strings(list_of_strings):
regex = compile(r'(?=(%s))')
for string in list_of_strings:
yield regex.findall(string)
</code></pre>
<p>这将对字符串应用匹配项,因为字符串列表中有字符串的次数相同,而正则表达式只编译了一次。在</p>
<p>啊啊。。。但你不需要正则表达式:</p>
^{pr2}$
<p>或者如果你真的想用re:</p>
<pre><code>def match_on_list_of_strings(bigstring, list_of_strings):
for string in list_of_strings:
if re.match('.*'+string+'.*', bigstring):
yield string
</code></pre>
<p>然后回答你的问题,不,你不能将目标字符串编译成正则表达式,但只能相反。编译regex时,要做的是将实际的regexp转换为自动机的内部表示形式。您可能想阅读<a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-045j-automata-computability-and-complexity-spring-2011/lecture-notes/MIT6_045JS11_lec03.pdf" rel="nofollow">NFA</a>和{a2}的课程</p>