строка содержит 5 цифр и строку

Я зацикливаюсь через текстовый файл, который содержит строки, например:

asdasdasd
lorem ipsum
lorem 12345-1
more lorem ipsum bacon

Из этого мне нужно знать, когда строка находит текст 12345-1

Lorem в beging является не относительным.

Могу ли я использовать стрипы как

if (stripos('/^[1-9]{0,5}$-1/', $line) !== false)

Я не знаю правильное регулярное выражение. Конечно, 12345 может быть чем угодно, но всегда 5 цифрами и заканчивается -1

3

Решение

Чтобы найти 5-значный блок с последующим -1, вы можете использовать

/\b[0-9]{5}-1\b/

Или, если границы слова (\b) слишком ограничен, используйте lookarounds:

/(?<!\d)\d{5}-1(?!\d)/

Увидеть regex demo

Используйте это с preg_match:

if (preg_match('/\b[0-9]{5}-1\b/', $line))
{
echo "Found!";
}

Детали шаблона:

  • \b — ведущая граница слова (или (?<!\d) — отрицательный взгляд, приводящий к сбою регулярного выражения, если перед текущим местоположением есть цифра)
  • [0-9]{5} — 5 цифр
  • -1 — буквенная последовательность символов -1
  • \b — конечная граница слова (или (?!\d) — отрицательный прогноз, приводящий к сбою регулярного выражения, если сразу после текущего местоположения есть цифра)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]