擅长:python、mysql、java
<p>值得一提的是,如果我在不使用内联捕获组的情况下分解表达式,它的行为是正确的。我现在可以用这个作为解决办法,但我肯定会喜欢一个解释为什么。。。你知道吗</p>
<pre><code>templateString = r'{title} {- author} ({timestamp})'
titleExp = re.compile(r'\{([^\{]*)title([^\}]*)\}', re.I)
authorExp = re.compile(r'\{([^\{]*)author([^\}]*)\}', re.I)
timestampExp = re.compile(r'\{([^\{]*)timestamp([^\}]*)\}', re.I)
title = "10 things on my todo list"
author = "Brandon"
timestamp = "2018-01-01 00:00:01"
match = re.search(titleExp, templateString)
title = '{}{}{}'.format(match.groups()[0], title, match.groups()[1])
templateString = re.sub(titleExp, title, templateString)
match = re.search(authorExp, templateString)
author = '{}{}{}'.format(match.groups()[0], author, match.groups()[1])
templateString = re.sub(authorExp, author, templateString)
match = re.search(timestampExp, templateString)
timestamp = '{}{}{}'.format(match.groups()[0], timestamp, match.groups()[1])
templateString = re.sub(timestampExp, timestamp, templateString)
print templateString
# output:
# 10 things on my todo list - Brandon (2018-01-01 00:00:01)
</code></pre>