Скажем, у меня есть строка, как это ...питон повторно обратная ссылка повторяется элементы
myStr = 'START1(stuff); II(morestuff); 8(lessstuff)'
... и я хочу, чтобы немедленно извлечь строку перед скобками, а также строки в скобках: 1
, stuff
, II
, morestuff
, 8
, lessstuff
. Я могу достичь этого, используя 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')
. Есть ли способ для обратной ссылки нескольких ударов одной и той же части выражения?
Вы хотите 'START1' или просто' 1'? – heemayl
Если вы собираетесь это сделать, вам необходимо сначала узнать о флаге 're.VERBOSE': https://docs.python.org/2/library/re.html#re.VERBOSE ;-) – thebjorn
@heemayl Просто '1'. Я мог бы оставить «СТАРТ» для целей этого вопроса. – reynoldsnlp