#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, если модификатор не указан, будет найдено только начало целого текста) Если он не экранирован и не находится внутри символьного класса Метасимвол, инвертирующий символьный класс, т.е. [^.] найдёт все символы, отличные от точки. ВНИМАНИЕ! [^^] находит любой символ, отличный от знака ^
Комментариев нет:
Отправить комментарий