2

我正在寻找一个正则表达式,它可以匹配前面有数字(整数、小数或小数)加上 0 个或多个空格的字符

例如

$str1="12.5km of road";
$str2="1/2 mile";
$str3="1 l milk";

例如,对于 $str1,我需要类似的东西:

$searchString="km";
preg_match("/THE_REGEX_I_NEED".$searchString."/", $str1, $arrayOfMatches);

我不擅长编写正则表达式,所以这里的任何帮助将不胜感激!

4

1 回答 1

2

您可以使用:

$str1="12.5km of road";
if (preg_match_all('~\d+(?:[/.]\d+)?\s*(\S+)~', $str1, $arr))
   print_r($arr[1]);

编辑:要仅匹配已知字符串,请使用以下代码:

$str1="2 miles of road in 50 states";
if (preg_match_all('~\d+(?:[/.]\d+)?\s*(miles|km)\b~', $str1, $arr))
print_r($arr[1]);

输出:

Array
(
    [0] => miles
)
于 2013-09-10T22:03:05.427 回答