擅长:python、mysql、java
<p>可以将函数传递给<a href="http://docs.python.org/2/library/re.html#re.sub" rel="nofollow">^{<cd1>}</a>方法:</p>
<pre><code># just to give the idea of the regex
regex = re.compile(r'''With (.+)
(the-regex-for-the-VB-expression)+?
End With''')
def repl(match):
beginning = match.group(1) # NpcList[NpcIndex] in your example
return ''.join(beginning + line for line in match.group(2).splitlines())
re.sub(regex, repl, the_string)
</code></pre>
<p>在<code>repl</code>中,您可以从<code>match</code>对象获取匹配的所有信息,构建任意一个字符串并返回它。匹配的字符串将被您返回的字符串替换。在</p>
<p>请注意,您必须非常小心地编写上面的<code>regex</code>。尤其是我使用<code>(.+)</code>来匹配排除的新行之前的所有行,这可能不是您想要的(但是我不知道VB,我不知道哪个regex可以去那里只捕捉您想要的内容。在</p>
<p><code>(the-regex-forthe-VB-expression)+</code>也是如此。我不知道这些代码行中可能是什么代码,因此我把实现它的细节留给您。<em>也许</em>接受所有的行是可以的,但是我不相信这样简单的东西(表达式可能跨越多行,对吗?)。在</p>
<p>一般来说,在一个大型正则表达式中执行所有操作很容易出错,而且速度很慢。在</p>
<p>我强烈地考虑regex只为了找到<code>With</code>和{<cd8>}并使用其他东西来进行替换。在</p>