Php 解析具有三个字母且preg_匹配的数字

Php 解析具有三个字母且preg_匹配的数字,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我有一个字符串,我必须解析有三个字母的数字,但我想使用相同的模式使用preg\u match 这是我的密码,有人能帮我吗 $string=" AMOUNT - 10.00CAD 0.50XGA 1.00XQA"; if(preg_match('/^\s+AMOUNT\s+\-\s+\d+[.]\d+[A-Z]{3}\s+((?J)(?<amount>\d+[.]\d+)(XGA)?(?J)\s+(?<amount>\d+[.]\d+)(XQA))/',$string,

我有一个字符串,我必须解析有三个字母的数字,但我想使用相同的模式使用
preg\u match

这是我的密码,有人能帮我吗

$string=" AMOUNT - 10.00CAD  0.50XGA  1.00XQA";
if(preg_match('/^\s+AMOUNT\s+\-\s+\d+[.]\d+[A-Z]{3}\s+((?J)(?<amount>\d+[.]\d+)(XGA)?(?J)\s+(?<amount>\d+[.]\d+)(XQA))/',$string,$m))
{
    print_r($m);
}
$string=“金额-10.00CAD 0.50XGA 1.00XQA”;
如果(preg\u匹配('/^\s+AMOUNT\s+\-\s+\d+[.]\d+[A-Z]{3}\s+((?J)(?\d+[.]\d+)(XGA)?(?J)\s+(?\d+[.]\d+(XQA))/,$string,$m))
{
印刷费(百万美元);
}

我会像这样使用
preg\u match\u all

$string=" AMOUNT - 10.00CAD  0.50XGA  1.00XQA";
if(preg_match_all('/^\s+AMOUNT\s+-\s+(*SKIP)(*F)|(\d+\.\d+)[A-Z]{3}\b/', $string, $m)) {
    print_r($m);
}
输出:

Array
(
    [0] => Array
        (
            [0] => 10.00CAD
            [1] => 0.50XGA
            [2] => 1.00XQA
        )

    [amount] => Array
        (
            [0] => 10.00
            [1] => 0.50
            [2] => 1.00
        )

    [1] => Array
        (
            [0] => 10.00
            [1] => 0.50
            [2] => 1.00
        )

)

那么,您的代码出了什么问题?嘿,Wiki,它不是在解析结果数组中pattern1 capturinggroup=>1项的第二个数字<代码>(?J)不会有帮助。然后再添加一个组。你能告诉我如何
[amount]=>0.50[amount]=>1.00
-PHP数组不能有重复的键
^\s+amount\s+-\s+(*SKIP)(*F)
这部分是无用的。@CasimiretHippolyte:除非OP想要匹配以开头的字符串。即使在这种情况下,它也不会做任何事情。要确保在几个匹配之前加上某些内容,唯一的方法是基于
\G
的模式。