Php预匹配问题不起作用
我正在尝试找到一个php preg_匹配,可以匹配: “2-20至2-25” 从本文中: 用户级别2-20至2-25未就绪 我试过了Php预匹配问题不起作用,php,preg-match,Php,Preg Match,我正在尝试找到一个php preg_匹配,可以匹配: “2-20至2-25” 从本文中: 用户级别2-20至2-25未就绪 我试过了 preg_match("/([0-9]+) to ([0-9]+)/", $vars[1] , $matchesto); 但结果是: “20比2” 感谢您的帮助。这是因为[0-9]+匹配一个或多个数字,但不匹配连字符(-) 试试这个: $pattern = '~([0-9]+-[0-9]+) to ([0-9]+-[0-9]+)~Ui'; preg_match(
preg_match("/([0-9]+) to ([0-9]+)/", $vars[1] , $matchesto);
但结果是:
“20比2”
感谢您的帮助。这是因为
[0-9]+
匹配一个或多个数字,但不匹配连字符(-
)
试试这个:
$pattern = '~([0-9]+-[0-9]+) to ([0-9]+-[0-9]+)~Ui';
preg_match($pattern, $vars[1] , $matchesto);
您可以使用“\d”匹配数字:
<?php
$str = 'user levels 2-20 to 2-25 not ready';
$matches = array();
preg_match('/(\d+-\d+) to (\d+-\d+)/', $str, $matches);
var_dump($matches);
你的模式几乎是正确的;只需包含破折号并调整捕获组:
([-0-9]+ to [-0-9]+)
例如:
([-0-9]+ to [-0-9]+)