我正在循环一个包含行的txt文件,例如:
asdasdasd
lorem ipsum
lorem 12345-1
more lorem ipsum bacon
从此我需要知道该行何时找到文字 12345-1
Lorem in the beging是相对的。
我可以使用像
这样的stripos吗?if (stripos('/^[1-9]{0,5}$-1/', $line) !== false)
我不知道正确的正则表达式。当然12345可以是什么,但它总是5位数,以-1
结束答案 0 :(得分:2)
要查找跟随-1
的5位数字块,您可以使用
/\b[0-9]{5}-1\b/
或者,如果字边界(\b
)过于严格,请使用外观:
/(?<!\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)
- 如果当前位置后面有一个数字,则正则表达式会导致正则表达式失败)