php正则表达式出错

php正则表达式出错,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我有以下代码: $text = "###12###hello###43###good###113###thefinalstring"; preg_match_all('/(.*?)###(\d*)###(.*?)/is', $text, $matches, PREG_SET_ORDER); 如果我转储$matches,为什么没有“finalstring”呢? 正则表达式中的错误在哪里 谢谢 使用此正则表达式试一试: $text = "###12###hello###43###good###11

我有以下代码:

$text = "###12###hello###43###good###113###thefinalstring";
preg_match_all('/(.*?)###(\d*)###(.*?)/is', $text, $matches, PREG_SET_ORDER);
如果我转储$matches,为什么没有“finalstring”呢? 正则表达式中的错误在哪里

谢谢

使用此正则表达式试一试:

$text = "###12###hello###43###good###113###thefinalstring";
preg_match_all('/###(\d*)###([^#]*)/is', $text, $matches, PREG_SET_ORDER);
print_r($matches);
输出:

Array
(
    [0] => Array
        (
            [0] => ###12###hello
            [1] => 12
            [2] => hello
        )

    [1] => Array
        (
            [0] => ###43###good
            [1] => 43
            [2] => good
        )

    [2] => Array
        (
            [0] => ###113###thefinalstring
            [1] => 113
            [2] => thefinalstring
        )

)

你能解释一下你的目标是什么,你到底想达到什么吗?(.*)#####(\d*)###(.*)([a-zA-Z]*)…这能解决你的目的吗?你想达到什么目的?你只在寻找最终字符串吗?我想知道字符串的每一部分,它被一个数字打断(可以是任何类型的字符),所以你想要“hello”、“good”和“thefinalstring”作为匹配的结果吗?嗯,这项工作只使用普通字符。。我怎么能说,所有的人?我们很接近。。如果它找到一个#,它就会断开。。。我只想在它找到另一个############@OscarFanelli:对不起,我不明白你的意思。您可以显示示例字符串以及要为每个字符串匹配的内容。示例1:你好#####405###

你好###32#####

示例2:##403
Array
(
    [0] => Array
        (
            [0] => ###12###hello
            [1] => 12
            [2] => hello
        )

    [1] => Array
        (
            [0] => ###43###good
            [1] => 43
            [2] => good
        )

    [2] => Array
        (
            [0] => ###113###thefinalstring
            [1] => 113
            [2] => thefinalstring
        )

)