preg_match一个String,用于从字符串中获取某些数字

时间:2013-12-03 10:03:00

标签: php regex

我有一个总是具有以下格式的字符串

Text: 1.1111111 Text

我需要的是1.11字符串

所以我选择了这个正则表达式

^(\S*\s)(\d.\d{2})

我已经使用http://regex101.com/来尝试它并且它在那里工作,但是当我在我自己的代码上执行它时,matches数组总是为空。

这是代码

//$ratingString = Durchschnittsbewertung: 4.65000 von 5 Sternen 20 Bewertungen Location bewerten 
preg_match ( "/^(\S*\s)(\d.\d{2})/", $ratingString, $matches );
var_dump ( $matches );
// matches == array (0) {}

2 个答案:

答案 0 :(得分:5)

你需要转义点,因为dot是正则表达式中的特殊字符,如果没有转义,则匹配任何字符

^(\S*\s)(\d\.\d{2})

答案 1 :(得分:2)

上帝,所以在这里......抱歉编辑。像这样

$ratingString = "Durchschnittsbewertung: 4.65000 von 5 Sternen 20 Bewertungen Location bewerten";
preg_match ( "#(\d\.\d{2})#", $ratingString, $matches );
var_dump ( $matches );