--------------正则大牛请进,谢谢!!-------------------

hzphper 2009-06-17 05:10:49
如:猪肉的价格为10-12,鱼的价格为6,白菜为1.5

我现在需要把10-12,6,1.5三个都提取出来.

现在5,1.5这两个匹配出来了,还有个10-12暂时未解决,欢迎大家来讨论,谢谢.
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzphper 2009-06-18
  • 打赏
  • 举报
回复
<?php
$a='猪肉的价格为10-12,鱼的价格为6,白菜为1.5';
preg_match_all('/[0-9]+[-\.]*[0-9]*/',$a,$arr);
print_r($arr);
/**输出Array
(
[0] => Array
(
[0] => 10-12
[1] => 6
[2] => 1.5
)

)**/
?>

改成这样即可了,preg_match_all('/[0-9.]+[-\.]*[0-9.]*/',$a,$arr);

谢谢2,4,5,8楼的牛人,谢谢大家.
hzphper 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 daniel75122 的回复:]
PHP code
<?php
$str="猪肉的价格为10-12,鱼的价格为6,白菜为1.5 ";
$pattern="/\d+(\\.\d+)?(-\d+(\\.\d+)?)?/";
preg_match_all($pattern,$str,$output);
foreach($output[0] as $value)
echo "$value ";
?>
[/Quote]

2楼这位的代码是没问题的.谢谢这位哥们.

[Quote=引用 4 楼 daguaio_O 的回复:]
PHP code<?php
$a='猪肉的价格为10-12,鱼的价格为6,白菜为1.5';
preg_match_all('/[0-9]+[-\.]*[0-9]*/',$a,$arr);
print_r($arr);
/**输出Array
(
[0] => Array
(
[0] => 10-12
[1] => 6
[2] => 1.5
)

)**/
?>
[/Quote]

4楼的代码确如5楼所言,对于10.5-12.5这样的数字,确实有点问题.不过一样谢谢这两位热心肠.^_^




[Quote=引用 8 楼 wxllyf 的回复:]
'/[\d-.]+/i'


大家注意看LZ的结贴率……
[/Quote]

8楼的代码经过测试,也是可以的.谢谢8楼

昨天晚上有点事情,没上来和大家打招呼,不好意思.

谢谢大家,我这就把帖子结了.
wxllyf 2009-06-18
  • 打赏
  • 举报
回复
'/[\d-.]+/i'




大家注意看LZ的结贴率……
fxs_2008 2009-06-17
  • 打赏
  • 举报
回复
要规律确才能提
daguaio_O 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 daniel75122 的回复:]
引用 4 楼 daguaio_O 的回复:
PHP code <?php
$a='猪肉的价格为10-12,鱼的价格为6,白菜为1.5';
preg_match_all('/[0-9]+[-\.]*[0-9]*/',$a,$arr);
print_r($arr);
/**输出Array
(
[0] => Array
(
[0] => 10-12
[1] => 6
[2] => 1.5
)

)**/
?>

根据楼主的数据类型,可能存在这样的数据“10.5-12.5”,那么你这正则就匹配不了
[/Quote]恩,确实,这种情况我漏掉了,多谢提醒了。
v轻扬v 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 daguaio_O 的回复:]
PHP code<?php
$a='猪肉的价格为10-12,鱼的价格为6,白菜为1.5';
preg_match_all('/[0-9]+[-\.]*[0-9]*/',$a,$arr);
print_r($arr);
/**输出Array
(
[0] => Array
(
[0] => 10-12
[1] => 6
[2] => 1.5
)

)**/
?>
[/Quote]
根据楼主的数据类型,可能存在这样的数据“10.5-12.5”,那么你这正则就匹配不了
daguaio_O 2009-06-17
  • 打赏
  • 举报
回复
<?php
$a='猪肉的价格为10-12,鱼的价格为6,白菜为1.5';
preg_match_all('/[0-9]+[-\.]*[0-9]*/',$a,$arr);
print_r($arr);
/**输出Array
(
[0] => Array
(
[0] => 10-12
[1] => 6
[2] => 1.5
)

)**/
?>

an9ryfr09 2009-06-17
  • 打赏
  • 举报
回复
给个示例字符串啊。
v轻扬v 2009-06-17
  • 打赏
  • 举报
回复

<?php
$str="猪肉的价格为10-12,鱼的价格为6,白菜为1.5 ";
$pattern="/\d+(\\.\d+)?(-\d+(\\.\d+)?)?/";
preg_match_all($pattern,$str,$output);
foreach($output[0] as $value)
echo "$value ";
?>
hzphper 2009-06-17
  • 打赏
  • 举报
回复
大家都下班了么?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧