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
的模式。