Я зацикливаюсь через текстовый файл, который содержит строки, например:
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
Чтобы найти 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)
— отрицательный прогноз, приводящий к сбою регулярного выражения, если сразу после текущего местоположения есть цифра)Других решений пока нет …