#regex #regex-lookarounds
#регулярное выражение #регулярное выражение-поиск
Вопрос:
Оно должно соответствовать подстроке между 0 или более пробелами. В C 11 нет look behind. Возможно ли переписать это регулярное выражение? Или мне нужно установить boost и использовать «полное» регулярное выражение powerful?
Регулярное выражение: ^s*(.*(?<! ))s*$
Изображение:
ОБНОВЛЕНИЕ: совпадение в обратной ссылке!
Ответ №1:
Вы можете сделать внутреннее *
ленивым, используя .*?
вместо этого, что позволяет ему сопоставлять как можно меньше символов, сохраняя при этом совпадение. Это позволяет последнему s*
использовать все пробелы:
>>> re.match(r'^s*(.*?)s*$', ' asdf asdf ').group(1)
'asdf asdf'
Комментарии:
1. Боже!!! Это потрясающе!!! Спасибо. Я понятия не имел об этом «ленивом» материале. ТЫ ЛУЧШИЙ.