Python 使用组标签将正则表达式转换为字典?P<&燃气轮机;

Python 使用组标签将正则表达式转换为字典?P<&燃气轮机;,python,regex,label,regex-group,Python,Regex,Label,Regex Group,我使用的是正则表达式模块,而不是python中的默认re模块 我试着做以下几点 >>> regex.compile('(?P<heavy>heavily|heavy)').search("My laptop is heavy or heavily").groupdict() {'heavy': 'heavy'} regex.findall将同时匹配heavy和heavy,但它不适用于组标签 我必须用正则表达式来解决这个问题,所以通过字符串迭代的解决方案是不可接受

我使用的是正则表达式模块,而不是python中的默认re模块

我试着做以下几点

>>> regex.compile('(?P<heavy>heavily|heavy)').search("My laptop is heavy or heavily").groupdict()
{'heavy': 'heavy'}
regex.findall将同时匹配heavy和heavy,但它不适用于组标签


我必须用正则表达式来解决这个问题,所以通过字符串迭代的解决方案是不可接受的。

[你读过正则表达式上的python文档吗?][1]

相关部分:

扫描目标字符串时,从左到右尝试用“|”分隔的REs。当一个模式完全匹配时,该分支被接受。这意味着一旦A匹配,B将不会被进一步测试,即使它将产生更长的整体匹配

这意味着您的正则表达式:

(?P<heavy>heavily|heavy)
要解决您的问题,有两种解决方案

  • 使用regex findall方法,该方法将返回一个列表,然后可以将该列表转换为字典。这是比较容易的路线

  • 制作一个正则表达式,它将实际查找这两个术语并将它们放入同一组。虽然这是可行的,但却非常复杂


  • 如果您希望搜索多个匹配项,我强烈建议您使用findall方法。

    奇怪,我希望它返回
    {'heavy':['heavy','heavy']}
    !请看这里:
    (?P<heavy>heavily|heavy)
    
    {"heavy": "heavy"}