#python #регулярные_выражения #работа_с_текстом
Задача: Из строки Ха-ха!? получить Ха-ха. Т.е. удалить только последние символы !?. Мой пример делает лишнего и на выходе Хаха import re valids = re.sub(r"[^A-Za-zА-Яа-я]+", '', 'Ха-ха!?') print(valids) Помогите, пожалуйста, направить регулярку на правильный путь.. UPD: Вместо !? может быть любая комбинация символов (!!!, ?), :) ). Важно то, что она в конце.
Ответы
Ответ 1
Можно и без регулярок обойтись: print('Ха-ха!?'.rstrip('!?')) # 'Ха-ха' Или взять набор символов из модуля string: import string print('Ха-ха!?'.rstrip(string.punctuation)) # 'Ха-ха' rstrip удаляет справа, lstrip удаляет слева, а strip слева и справа Или с такой регуляркой: print(re.sub(r"[!?]+$", '', 'Ха-ха!?')) # 'Ха-ха' @jfs предложил такой вариант: # pip install regex import regex as re print(re.sub(r'\p{P}+$', '', 'Ха-ха!?')) # Ха-хаОтвет 2
В регулярных выражениях есть символ, означающий конец строки - $ Попробуйте так: import re valids = re.sub(r"[^\w]*$", '', 'Ха-ха!?') print(valids)
Комментариев нет:
Отправить комментарий