Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Обработать строку с помощью регулярного выражения на Python

#python #регулярные_выражения #python_35


Задача: нужно отбросить из начала данной строки все символы, не являющимися буквами,
до первой встретившийся буквы. Исключительно используя регулярное выражение.

Например:
s = "12. Привет мир 23 раза"

Должно остаться "Привет мир 23 раза"

Пробовал как то так

re.match(r'(?<=(\d|\.|\s)*)(.*)', s).group()


не получается
    


Ответы

Ответ 1



Модуль регулярных выражений Python re не поддерживает блоков предварительного просмотра назад неопределенной длины. В (?<=(\d|\.|\s)*) длина совпадения неопределена, так как квантификатор * находит ноль и более (неизвестно сколько) символов. Используйте re.sub(r'^[^а-яА-ЯёЁ]+', '', s) Демо Подробности: ^ - начало строки [^а-яА-ЯёЁ]+ - 1 и более символов, отличных от русских букв. Если надо, можно включить и латинские - [^а-яА-ЯёЁa-zA-Z]+. Примечание: Символ ^ в разных контекстах может обозначать: Буквальный символ ^ (caret): Если он экранирован знаком \ (в любом месте регулярного выражения) Если он находится внутри символьного класса не в начальной позиции (т.е. [;!^]) (В некоторых других языках / библиотеках ещё может быть между \Q ... \E) Метасимвол начала строки/целого текста (в зависимости от модификатора или библиотеки регулярных выражений, в Python при использовании re.M / re.MULTILINE - позиция после знака перевода строки LF, \n, если модификатор не указан, будет найдено только начало целого текста) Если он не экранирован и не находится внутри символьного класса Метасимвол, инвертирующий символьный класс, т.е. [^.] найдёт все символы, отличные от точки. ВНИМАНИЕ! [^^] находит любой символ, отличный от знака ^

Комментариев нет:

Отправить комментарий