сопоставление текста, следующего за специальной строкой

#regex #pcre #regular-language

#регулярное выражение #pcre #обычный язык

Вопрос:

У меня проблема с моим регулярным выражением, я пытаюсь извлечь строку / число / что угодно после специальной строки.

У меня есть эта строка:

ТЕСТ 3098

Между TEST и его значением есть 6 пробелов, но я не совсем уверен, всегда ли это 6 пробелов. Я пробую это регулярное выражение (PCRE)

 (?<=TESTssssss).*?(?=s)
  

Результатом должно быть 3098. С помощью моего регулярного выражения я получаю правильный результат, но он недостаточно сильный, если количество пробелов изменится, я не смогу его извлечь.
Вид сзади должен быть ограниченного размера.
Есть какие-нибудь предложения?

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

1. (?<=TESTs ).*?(?=s) ? За ТЕСТОМ следует 1 или много пробелов?

Ответ №1:

Вы можете использовать

 TESTs*KS 
  

Если количество пробелов должно быть установлено на некоторое минимальное / максимальное число, используйте ограничивающий квантификатор, s{2,} будет соответствовать двум или более, s{1,10} допустимо от 1 до 10 пробелов.

Подробные сведения

  • TEST TEST
  • s* — 0 или более пробелов
  • K оператор сброса соответствия, который опускает текст, совпадающий до сих пор, из общего буфера памяти соответствия
  • S — 1 пробелов

Смотрите демонстрацию регулярных выражений

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

1. Я не знал о K , такой классный чувак. Вот подробное описание регулярного выражения: regex101.com/r/YyaPNU/1