擅长:python、mysql、java
<p>简而言之,在<code>re</code>引擎中不可能完成所有这些。无法动态生成更多组。它会把它放在一个组里。您应该像这样重新分析结果:</p>
<pre><code>import re
input_str = ("TABLE_ENTRY.0[0x1234]= <FIELD_1=0x1234, FIELD_2=0x1234, FIELD_3=0x1234>\n"
"TABLE_ENTRY.1[0x1235]= <FIELD_1=0x1235, FIELD_2=0x1235, FIELD_3=0x1235>")
results = {}
for match in re.finditer(r"([A-Z_0-9\.]+\[0x[0-9A-F]+\])=\s+<([^>]*)>", input_str):
fields = match.group(2).split(", ")
results[match.group(1)] = dict(f.split("=") for f in fields)
>>> results
{'TABLE_ENTRY.0[0x1234]': {'FIELD_2': '0x1234', 'FIELD_1': '0x1234', 'FIELD_3': '0x1234'}, 'TABLE_ENTRY.1[0x1235]': {'FIELD_2': '0x1235', 'FIELD_1': '0x1235', 'FIELD_3': '0x1235'}}
</code></pre>
<p>输出只是一个大dict,由一个表条目组成,到它的字段的dict。在</p>
<p>它也相当方便,因为你可以这样做:</p>
^{pr2}$
<p>我个人建议去掉“TABLE_ENTRY”,因为它是重复的,但如你所愿。在</p>