Php 正则表达式仅匹配字符串的第一个匹配项
我让troble将字符串分解为数组或匹配模式。 下面是字符串:Php 正则表达式仅匹配字符串的第一个匹配项,php,regex,Php,Regex,我让troble将字符串分解为数组或匹配模式。 下面是字符串: Purchased: 12/7/11 58 - $2.5 Gold Coin @ $341.00 290 - Silver Dollar @ $36.02 Total - $500000.00 我想解析这个字符串并返回一个多维数组,如下所示: Array ( [0] => Array ( [0] => 58 - $2.5 Gold Coin @ $341.00 [1] =
Purchased:
12/7/11
58 - $2.5 Gold Coin @ $341.00
290 - Silver Dollar @ $36.02
Total - $500000.00
我想解析这个字符串并返回一个多维数组,如下所示:
Array
(
[0] => Array
(
[0] => 58 - $2.5 Gold Coin @ $341.00
[1] => 290 - Silver Coin @ $36.02
)
[1] => Array
(
[0] => 58
[1] => 290
)
[2] => Array
(
[0] => $2.5 Gold Coin
[1] => Silver Coin
)
[3] => Array
(
[0] => 341.00
[1] => 36.02
)
[4] => Array
(
[0] => .00
[1] => .02
)
)
到目前为止,我有:
\s*?\n(\d*\.?\d*)\s-\s(.*?)\s\$(\d+(\.\d+)?\.?[0-9]*)
但是,当产品名称中有一个美元符号(即:“$2.5金币”)时,捕获组不起作用
我想知道是否有办法只从以“@$”开头的字符串中获取金额
我一直在尝试解决这个问题,这是一个很好的工具,但还没有什么乐趣。你可以使用它
^(\d*\.?\d+)\s*-\s*(?:VF\s+)?(.*)\s@\s\$(\d+(\.\d+)?)
见
详细信息
-字符串的开头^
-第1组:0+位,可选的(\d*\?\d+)
和1+位
-\s*-\s*
用0+空格括起来-
-可选的非捕获组:(?:VF\s+)
和1+空格VF
-第2组:尽可能多的0+字符(换行字符除外)(.*)
-包含1个空格的\s@\s
@
-a\$
字符$
-第3组:1个或多个数字,后跟与点匹配的可选第4组,然后是1个以上的数字(\d+(\.\d+))
341
缺少一个$
你能写下你的输入和预期输出以匹配并具有某种逻辑一致性吗?第一印象很重要,仅供参考。对于一个不可理解的示例,您有18个视图。大多数人不会回来检查编辑,你可以期望你的文章平均不超过30-50次。我并不是想表现得刻薄,那只是现实。另外,请检查^(\d*\?\d+)\s*-\s*(?:VF\s+)(.*)\s@\s\$(\d+)(\。\d+)
,请参阅