Задать вопрос
@sortfact333

Как обработать строку?

Мне нужно обработать строку так, чтобы она вернула мне нужные значения:
def tag(text,res):
	return re.findall(res, text)
val = '[tag]tag1[/tag] #tag2#tag22 text [tag]tag3,tag4[/tag]'
tag(val,r'\[tag].+?\[/tag]')  # должен вернуть ['tag1','tag3,tag4']
tag(val,r'\#.+?\w+') # должен вернуть ['tag2','#tag22']
  • Вопрос задан
  • 214 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
SoreMix
@SoreMix Куратор тега Python
yellow
a = re.findall(r'\[tag\](.+?)\[/tag\]', val)
b = re.findall(r'#\w+', val)
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
Вот так можно получить текст между любым открывающим и соответствующим закрывающим тегом:
for match in re.finditer('\[(?P<my_tag>[\w\d]+)\](.*?)\[/(?P=my_tag)\]', val):
    if match:
        print(match.group(2))

Здесь my_tag не относится непосредственно к тегу, это просто название группы захвата re.
Ответ написан
Комментировать
mlneko
@mlneko
Мало кто использует compile, но я да.
#шаблон
comp = re.compile('([.]+)/([0-9]+)')
#поиск по шаблону
res = comp.findall('asad/121020')
print(res)
#['asad', '121020']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы