正则表达式获取关键字后的字符串

时间:2015-03-11 17:55:05

标签: php regex

我需要在字符串中搜索一个字符串并获取其后面的部分(没有空格)。

示例:

This ABC-Code: 12 3 45
Another ABC-Code: 678 9

现在我正在搜索关键字ABC-Code:,我希望在此之后获取数字(删除空格),结果将是:

12345
6789

我试图用substr()来解决这个问题,但问题是,以前的字符是可变的。所以我想我必须使用RegEx,如下:

preg_match("#ABC-Code:(.*?)\n#", $line, $match);
trim($match); // + remove spaces in the middle of the result

3 个答案:

答案 0 :(得分:2)

您需要使用preg_replace_callback功能。

$str = <<<EOT
This ABC-Code: 12 3 45
Another ABC-Code: 678 9
EOT;
echo preg_replace_callback('~.*\bABC-Code:(.*)~', function ($m)
        { 
            return str_replace(' ', '', $m[1]);
        }, $str);

<强>输出:

12345
6789

答案 1 :(得分:1)

您可以使用:

preg_match('#ABC-Code: *([ \d]+)\b#', $line, $match);

然后使用:

$num = str_replace(' ', '', $match[1]);
// 12345

为你编号。

答案 2 :(得分:0)

您仍然可以使用substr:

执行此操作
$string = 'This ABC-Code: 12 3 45';
$search = 'ABC-Code:';
$result = str_replace(' ', '', substr($string, strpos($string, $search) + strlen($search)));

但其他答案中的正则表达式肯定更漂亮:)