python重新反向引用重复的元素

2024-09-27 07:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一根这样的线。。。你知道吗

myStr = 'START1(stuff); II(morestuff); 8(lessstuff)'

…我想提取括号前的字符串,以及括号内的字符串:1stuffIImorestuff8lessstuff。我可以使用split(';')等实现这一点,但我想看看是否可以使用re.search()一下子实现。我试过。。。你知道吗

test = re.search( r'START(?:([I0-9]+)\(([^)]+?)\)(?:; )?)*', myStr ).groups()

…或更可读的格式。。。你知道吗

test = re.search( r'''
                  START         # This part begins each string
                  (?:           # non-capturing group
                    ([I0-9]+)   # capture label before parentheses
                    \(
                      ([^)]+?)  # any characters between the parentheses
                    \)
                    (?:; )?     # semicolon + space delimiter
                  )*
                  ''', myStr, re.VERBOSE ).groups()

…但我只得到最后一个点击:('8', 'lessstuff')。有没有一种方法可以反引用表达式同一部分的多个命中?你知道吗


Tags: 字符串testresearchstart括号iigroups
1条回答
网友
1楼 · 发布于 2024-09-27 07:32:57

您可以在findall中使用此正则表达式来捕获文本:

>>> myStr = 'START1(stuff); II(morestuff); 8(lessstuff)'
>>> print re.findall(r'(?:START)?(\w+)\(([^)]*)\)', myStr)
[('1', 'stuff'), ('II', 'morestuff'), ('8', 'lessstuff')]

RegEx Demo

相关问题 更多 >

    热门问题