Как изменить это регулярное выражение без проверки lookbehind

#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. Боже!!! Это потрясающе!!! Спасибо. Я понятия не имел об этом «ленивом» материале. ТЫ ЛУЧШИЙ.