Поиск регулярных выражений Python против соответствия

#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

Графическое представление:

введите описание изображения здесь