#python #regex
#python #регулярное выражение
Вопрос:
Я пытаюсь использовать регулярное выражение python для сопоставления с ‘BrahuiHan’ или ‘BrahuiYourba’
>> re.search(r'((Brahui|Han|Yoruba) d )', '10xBrahuiHan50_10xBrahuiYoruba50n4').groups()
('BrahuiHan50', 'Han')
это возвращает только одну группу, первую, я подумал, что она должна вернуть и вторую. т.е. BrahuiYoruba
Ответ №1:
Если вы хотите зафиксировать все вхождения шаблона, вам необходимо использовать re.findall
:
>>> import re
>>> re.findall(r'((Brahui|Han|Yoruba) d )', '10xBrahuiHan50_10xBrahuiYoruba50n4')
[('BrahuiHan50', 'Han'), ('BrahuiYoruba50', 'Yoruba')]
>>>
re.search
будет фиксировать только первое вхождение.
Ответ №2:
Попробуйте
import re
regex = re.compile("((Brahui|Han|Yoruba)\d{1,})")
testString = "" # fill this in
matchArray = regex.findall(testString)
# the matchArray variable contains the list of matches
Вот демонстрация на debuggex
Графическое представление: