Php 我可以使用什么正则表达式从字符串中获取位置(字符串)和数量(整数)的值?

Php 我可以使用什么正则表达式从字符串中获取位置(字符串)和数量(整数)的值?,php,regex,string,Php,Regex,String,我想在PHP中使用正则表达式从字符串中导出位置(字符串)和金额(浮点) 目标字符串的格式如下 7 11曼利西10.00 位置是由a-z、a-z、0-9和连字符组成的字符串 金额的货币形式为-10.40美元和-40美分。金额也可以是负数,并且不保留零(4.30-4美元和30美分)。如果您知道正则表达式的格式总是这样,并且金额是最后一部分,则不必使用正则表达式。你能行 $data = explode(" ",$inputstring); $amount = array_pop($data); $pl

我想在PHP中使用正则表达式从字符串中导出位置(字符串)和金额(浮点)

目标字符串的格式如下

7 11曼利西10.00

位置是由a-z、a-z、0-9和连字符组成的字符串


金额的货币形式为-10.40美元和-40美分。金额也可以是负数,并且不保留零(4.30-4美元和30美分)。

如果您知道正则表达式的格式总是这样,并且金额是最后一部分,则不必使用正则表达式。你能行

$data = explode(" ",$inputstring);
$amount = array_pop($data);
$place = implode(" ",$data);
但是如果你真的想要一个正则表达式,可以试试类似的东西

(([a-zA-Z0-9]+\s)+)(-?[1-9][0-9]*\.[0-9]{2})

然后,您可以在第一个背面参考中获得位置,在第三个背面参考中获得价格。如果您知道正则表达式的格式始终是这样的,则不必使用正则表达式,其中金额将是最后一部分。你能行

$data = explode(" ",$inputstring);
$amount = array_pop($data);
$place = implode(" ",$data);
但是如果你真的想要一个正则表达式,可以试试类似的东西

(([a-zA-Z0-9]+\s)+)(-?[1-9][0-9]*\.[0-9]{2})

然后,您可以在第一个返回参考中获得位置,并在第三个返回参考中获得价格,前提是您可以保证最后总会有一个价格,这将与您的字符串相匹配:

preg_match(/^(.*)(-?[0-9]+\.[0-9]+)$/, $yourString, $matches);
并且,
$matches

array(
  0 => '7 Eleven Manly West 10.00',
  1 => '7 Eleven Manly West ', 
  2 => '10.00'
)

如果您可以保证最后总会有一个价格,这将与您的字符串匹配:

preg_match(/^(.*)(-?[0-9]+\.[0-9]+)$/, $yourString, $matches);
并且,
$matches

array(
  0 => '7 Eleven Manly West 10.00',
  1 => '7 Eleven Manly West ', 
  2 => '10.00'
)

我更喜欢你的答案,它可能比使用regexp快。我更喜欢你的答案,它可能比使用regexp快。