字符串包含 5 个数字和行

string contains 5 numbers and line

我正在遍历一个 txt 文件,其中包含以下行:

asdasdasd
lorem ipsum
lorem 12345-1
more lorem ipsum bacon

据此我需要知道该行何时找到文本 12345-1

开头的定理是不相关的

我可以像这样使用stripos吗

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

我不知道正确的正则表达式。当然 12345 可以是任何数字,但它总是 5 位数字并以 -1

结尾

要查找后跟 -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) - 如果当前位置后面有数字,则否定前瞻使正则表达式失败)