Вопрос по работе группирующих скобок в регулярном выражении
Имеются строки состоящие вперемешку из хэштэгов и других символов.
Мне необходимо поделить парами символы и хэштэги, идущие за ними.
Пример:
есть строка 'abc####d##c#' Я написал вот такое вот:
import re
def clean_string(s):
string = re.findall(r'(\w+)(#+)', s)
return string
На выходе получаю кортежи : [('abc', '####'), ('d', '##'), ('c', '#')]
Но, к сожалению, это не работает если последний символ не хэштэг. Тогда последней пары просто не получается.
Я совершенно нулячий в регулярках. Подскажите, пожалуйста, можно ли сделать как-то, чтобы если последнему символу уже не хватает хэштэга, то вместо него парой добавлялся какой-нибудь символ? Что-то типа как в itertools.zip_longest.
Ответы (1 шт):
Автор решения: dIm0n
→ Ссылка
Используйте * вместо +:
import re
def clean_string(s):
s1 = re.findall(r'(\w+)(#*)', s)
return s1
print(clean_string('abc####d##c#'))
print(clean_string('abc####d##c'))