正则表达式^.[,\t]+;php

正则表达式^.[,\t]+;php,php,regex,Php,Regex,我对这个简单的正则表达式有一个问题 它可以在记事本++和记事本上使用,但我不能在PHP上使用它,当然我写的代码很糟糕,但我尝试解决的时间超过了2个小时,我看不到解决方案。 我必须像这个file.txt一样管理Amazon report SEM45-4C-CUPOLE B075FQGBXS 7438632301630 SEM60-6C-CUPOLE B075FLSCXJ 7438632301623 SEM80-8C-CUPOLE B075FPTVX1 7438632301616 我只需要最

我对这个简单的正则表达式有一个问题

它可以在记事本++和记事本上使用,但我不能在PHP上使用它,当然我写的代码很糟糕,但我尝试解决的时间超过了2个小时,我看不到解决方案。 我必须像这个file.txt一样管理Amazon report

SEM45-4C-CUPOLE B075FQGBXS  7438632301630
SEM60-6C-CUPOLE B075FLSCXJ  7438632301623
SEM80-8C-CUPOLE B075FPTVX1  7438632301616
我只需要最后一个号码
7438xxxxx

我用PHP写这个文件的上传

$string =  file_get_contents($_FILES['report']['tmp_name']);
$pattern = '/^.*[ ,\t]/';
$replacement = '';
$string = preg_replace($pattern,$replacement,$string);
echo  $string;
但它不起作用,我总是看到所有的内容。
有人能帮我吗

尝试使用多行修改器的图案:

$pattern = '~^.*[ ,\t]~m';

您也可以使用
preg\u match\u all

$string =  file_get_contents($_FILES['report']['tmp_name']);
$pattern = '\d+(\v|\Z)/';
$results = [];
preg_match_all($pattern,$string, $results, PREG_PATTERN_ORDER);
echo $results[0];
而且,
$results[0]
包含一个数字数组,即您正在寻找的数字。

为什么要替换除您想要的以外的所有数字,而不仅仅是捕获您想要的

$in = <<<_E_
SEM45-4C-CUPOLE B075FQGBXS  7438632301630
SEM60-6C-CUPOLE B075FLSCXJ  7438632301623
SEM80-8C-CUPOLE B075FPTVX1  7438632301616
_E_;

foreach(explode("\n", $in) as $line) {
    $parts = preg_match('/(\d+)$/', $line, $matches);
    printf("%s\n", $matches[1]);
}

你必须使用正则表达式吗?数字总是一样长吗?为什么不使用呢?这不是regex的教科书用例吗?@Louis MarieMatthews:为什么不使用呢?这不是正则表达式的教科书用例吗?否,或
分解
子序列
foreach(explode("\n", $in) as $line) {
    $parts = preg_split('/\s+/', $line);
    printf("%s\n", $parts[2]);
}