字符串包含 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)/
与preg_match
一起使用:
if (preg_match('/\b[0-9]{5}-1\b/', $line))
{
echo "Found!";
}
图案详情:
\b
- 前导词边界(或 (?<!\d)
- 如果当前位置之前有数字,则负向后视会使正则表达式失败)
[0-9]{5}
- 5 位数
-1
- 文字字符序列 -1
\b
- 尾随单词边界(或 (?!\d)
- 如果当前位置后面有数字,则否定前瞻使正则表达式失败)
我正在遍历一个 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)/
与preg_match
一起使用:
if (preg_match('/\b[0-9]{5}-1\b/', $line))
{
echo "Found!";
}
图案详情:
\b
- 前导词边界(或(?<!\d)
- 如果当前位置之前有数字,则负向后视会使正则表达式失败)[0-9]{5}
- 5 位数-1
- 文字字符序列-1
\b
- 尾随单词边界(或(?!\d)
- 如果当前位置后面有数字,则否定前瞻使正则表达式失败)