我尝试多次匹配一个令牌,但我只得到最后一次出现的情况,我理解这是根据this answer的正常行为,但我无法获得示例中给出的解决方案。在
我的文字如下:
&{dict1_name}= key1=key1value key2=key2value
&{dict2_name}= key1=key1value
所以基本上是多行,每行都有一个起始字符串,空格,然后是可变数量的密钥对。如果您想知道这是从哪里来的,那么这是一个robot框架变量文件,我正试图将其转换为python变量文件。在
我将每行迭代匹配密钥对,并从中构造一个python字典。在
我当前的regex模式是:
^{pr2}$这可以正确地得到dict名称,但是密钥对只匹配最后出现的一个,如上所述。我如何让它返回一个包含:("dict1_name","key1","key1value"..."keyn","keynvalue")
的元组,这样我就可以遍历它并构造python字典,如下所示:
dict1_name= {"key1": "key1value",..."keyn": "keynvalue"}
谢谢!在
您可以使用两个正则表达式一个用于名称,另一个用于项目,在第一个空格后应用一个:
输出
^{pr2}$说明
}。第二个regex匹配由
^{3}$'^&\{(\w+)\}='
匹配一个'&'
,后跟一个由大括号'\{', '\}'
包围的单词{'='
连接的任何单词。行:创建字典文本,最后使用
exec
创建具有所需名称的字典。您可以访问字典查询局部变量的值。在结合听写理解使用两种表达方式:
产生
^{pr2}$这两个表达式是 ^{3}$
{见^ a1。第二个呢
请参见a demo for the latter on regex101.com。在
剩下的就是在听写理解中对不同的表达方式进行简单的排序。在
正如您所指出的,您需要解决这样一个事实:捕获组只捕获最后一个匹配项。一种方法是利用文件中的行是iterable这一事实,并使用两种模式:一种用于“line name”,另一种用于其多个keyvalue对:*
*诚然,这有点低效,因为每行执行两次搜索。但对于中等大小的文件,应该没问题。
结果:
^{pr2}$请注意,
\w
匹配Unicode单词字符。在样本输入,keyvals.txt公司名称:
^{3}$相关问题 更多 >
编程相关推荐