我有一根线看起来像:
TABLE_ENTRY.0[hex_number]= <FIELD_1=hex_number, FIELD_2=hex_number..FIELD_X=hex>
TABLE_ENTRY.1[hex_number]= <FIELD_1=hex_number, FIELD_2=hex_number..FIELD_Y=hex>
字段的数量未知,并且随着条目的不同而变化,我想捕获 每个条目分别包含其所有字段及其值。在
我想到了:
^{pr2}$它与表条目和第一个字段相匹配,但我不知道如何计算可变字段数。在
输入:
ENTRY_0[0x130]=0: <FIELD_0=0, FIELD_1=0x140... FIELD_2=0xff3>
输出应为:
ENTRY 0:
FIELD_0=0
FIELD_1=0x140
FIELD_2=ff3
ENTRY 1:
...
使用捕获组匹配不合适的长度:
下面的部分用逗号和空格匹配每个字段
^{pr2}$并且
([A-Z_0-9]+)=(0x[0-9]+|0)
将匹配最新字段。在演示:https://regex101.com/r/gP3oO6/1
注意:如果您不想让某些组使用非捕获组,最好在捕获组的前面添加}作为regex中的额外值(基于您的输入模式)
?:
。((?: ...)
),并注意{简而言之,在
re
引擎中不可能完成所有这些。无法动态生成更多组。它会把它放在一个组里。您应该像这样重新分析结果:输出只是一个大dict,由一个表条目组成,到它的字段的dict。在
它也相当方便,因为你可以这样做:
^{pr2}$我个人建议去掉“TABLE_ENTRY”,因为它是重复的,但如你所愿。在
相关问题 更多 >
编程相关推荐