擅长:python、mysql、java
<p>我会尽量简单:</p>
<pre><code>entries = []
for line in inputsource:
entries.append(map(str.strip, line.strip().strip('{}').split(', ')))
</code></pre>
<p>因此,对于每一行,先去掉空白,然后用大括号,然后在逗号加上分隔命令的空格上拆分,并存储去掉空格的结果。在</p>
<p>这依赖于这样一个事实:命令由逗号加上空格分隔,而示例中的参数只使用逗号而不使用空格。如果您有任何违反这一区别的东西,那么您确实需要求助于正则表达式。我只想把它限制在分割上:</p>
^{pr2}$
<p>如果<code>commandsep</code>表达式前面有一个<code>)</code>右括号(使用look-behind断言),则<code>commandsep</code>表达式将在任何逗号加上可选空格上拆分。在</p>
<p>输入结果:</p>
<pre><code>>>> entries
[['topic.equals(org.fedoraproject.prod.bodhi.buildroot_override.tag)', 'foo.notequals(bar)'], ['topic.in(1,2,3)', 'foo.equals(baz)']]
</code></pre>
<p>如果这些条目嵌入到较大的文本体中,则正则表达式可能会有所帮助,但只能查找大括号分隔的值:</p>
<pre><code>import re
expression = re.compile(r'{[^{}]+}')
inputsource = expression.findall(largerbodyoftext)
</code></pre>
<p>其中<code>expression</code>将找到由大括号分隔的任何文本(无嵌套)。在</p>