簡體   English   中英

python重新引用重復元素

[英]python re backreference repeated elements

假設我有一個像這樣的字符串......

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') 有沒有辦法反向引用表達式相同部分的多個命中?

您可以在findall使用此正則表達式來捕獲您的文本:

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

RegEx演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM