Allegro75
@Allegro75
SummaryTables.ru - сайт с футбольной статистикой

Как найти последовательность символов при условиях описанных ниже?

Как найти такую последовательность символов needle, перед которой НЕТ последовательности символов baffle, после которой (после baffle) может быть любое число пробельных символов?
Т.е., говоря грубее, такой needle, перед которым нет baffle (c пробелами или без).
Можно даже baffle, после к-рого есть как минимум один пробел.
В любом случае VS Code в режиме поиска по папке (мне нужен поиск по папке), по проекту в целом (а не по отдельному файлу) отказывается считать корректными выражения типа
(?<!baffle\s*)needle
или
(?<!baffle\s+)needle
Говорит, что недопустима звёздочка или плюс внутри ретроспективной проверки.
Что интересно, в режиме поиска по файлу такое выражение кушается VS Cod'ом без проблем:
5f78d46821d37925816204.jpeg
Так же "не ест" эти выражения https://regex101.com/

Текст для экспериментирования (тут есть четыре правильных needl'а):
baffle needle buffalo
baffle needlebaffle fine
baffle
needle baffleneedle baffle

fine
baffle buffalo
needle buffalo needle
baffle needle
needle baffle fine
needlefine
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Короткий вариант "на авось" (работает на вашем примере):
([^e\s]|[^l]e|[^f]le)\s*(needle)

Полный вариант под формулировку вопроса:
([^e\s]|[^l]e|[^f]le|[^f]fle|[^a]ffle|[^b]affle)\s*(needle)

https://regex101.com/r/hxapI9/1

Не знаю, захватывает ли у вас перевод строки, и нужно ли вам это, но на всякий случай:
([^e\s]|[^l]e|[^f]le|[^f]fle|[^a]ffle|[^b]affle)[\s\r\n]*(needle)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы