PHP Regex:在定义的子字符串之前忽略所有内容

时间:2011-11-07 04:57:05

标签: php regex

我正在尝试解析网页。 基本上它存储在一个如下所示的字符串中:

"[HTML CODE ...]world:[HTML CODE ...]my_number[REST OF HTML_CODE ...]"

当然“world:”和“MY_NUMBER”是html代码的一部分,但是我想在第一次出现“world:”之前忽略所有内容。我需要的是第一次出现“world:”后出现的第一个数字,请记住,这些数字之间会有一堆html代码。 我可以对html代码进行子串,但是如果可能的话,我想通过使用单个正则表达式来完成所有这些。

这是我试图匹配的正则表达式:

'/(?<=world:)\D+?[0-9]+/'

但这会让我回复“世界:”和我的号码之间的所有html内容。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你接近它了。我能够在你提供的字符串上使用它。

$subject = "[HTML CODE ...]world:[HTML CODE ...]3334[REST OF HTML_CODE ...]";
$pattern = "/world:\D+?(?<my_number>[0-9]+)/";
$matches = array();

$result =  preg_match_all($pattern, $subject, &$matches);

print_r($matches);

结果:

Array
(
    [0] => Array
        (
            [0] => world:[HTML CODE ...]3334
        )

    [my_number] => Array
        (
            [0] => 3334
        )

    [1] => Array
        (
            [0] => 3334
        )

)