<p>您可以使用此正则表达式,它将匹配组1中<code>:</code>之前的最后一组单词字符(包括<code>-</code>),然后将所有其他字符匹配到组2中的下一个注释(<code>###</code>)或字符串结尾:</p>
<pre><code>([\w-]+)\s*:\s*(.*?)(?=\s*###|$)
</code></pre>
<p>然后,您可以通过对字符串中的每个匹配项在两个组上进行迭代来创建字典:</p>
<pre><code>import re
test_string = """
###Some Comment
First-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
so on .....
}
###2nd Comment
Second-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
so on .....
}
###Some other Comment
someother-tags :
{
"tag1": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
},
"tag2": {
"tagKey1": "tagValue1",
"tagKey2": "tagValue2"
}
so on .....
}
"""
res = {}
for match in re.finditer(r'([\w-]+)\s*:\s*(.*?)(?=\s*###|$)', test_string, re.S):
res[match.group(1)] = match.group(2)
print(res)
</code></pre>
<p>输出:</p>
<pre><code>{
'First-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }',
'Second-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }',
'someother-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }'
}
</code></pre>
<p><strong>更新</strong></p>
<p>如果您还希望获取注释,可以使用以下代码:</p>
<pre><code>res = {}
for match in re.finditer(r'###([^\n]+)\s*([\w-]+)\s*:\s*(.*?)(?=\s*###|$)', test_string, re.S):
res[match.group(1)] = { match.group(2) : match.group(3) }
print(res)
</code></pre>
<p>输出:</p>
<pre><code>{
'Some Comment ': {
'First-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }'
},
'2nd Comment ': {
'Second-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }'
},
'Some other Comment ': {
'someother-tags': '{\n "tag1": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n },\n "tag2": {\n "tagKey1": "tagValue1",\n "tagKey2": "tagValue2"\n }\n so on .....\n }'
}
}
</code></pre>