gpt4 book ai didi

python重新反向引用重复元素

转载 作者:行者123 更新时间:2023-11-30 22:56:17 25 4
gpt4 key购买 nike

假设我有一个像这样的字符串...

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

...我想提取紧邻括号之前的字符串以及括号内的字符串: 1, stuff, II更多内容8更少内容。我可以使用 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')。有没有办法反向引用表达式同一部分的多次命中?

最佳答案

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

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

RegEx Demo

关于python重新反向引用重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com