php - 如何查找前面有数字/小数/分数的单词的所有出现位置

标签 php regex

我正在寻找一个正则表达式,它可以匹配前面带有数字(整数、小数或分数)加 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);

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

最佳答案

您可以使用:

$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
)

关于php - 如何查找前面有数字/小数/分数的单词的所有出现位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729409/

相关文章:

php - Google People API(如何使用 API key 进行身份验证)

Javascript 将属性拆分为对象排除在字符串中

javascript - 使用正则表达式替换javascript中的情绪字符

php - SilverStripe:如何在另一个选项卡之前插入一个选项卡?

php - PostgreSQL LISTEN/NOTIFY 不工作

php - 我如何限制它以排除重复项?我的消息出现了两次,因为我与多个人成为 friend

php - 选择一些包含特定 INT 的 SQL 行

regex - 用制表符替换空格缩进 (PCRE)

JavaScript - 重复字符的动态正则表达式

javascript - 没有 www 但最后带有 .html 的 url 的正则表达式?