php - 正则表达式匹配一个数字后跟一个特定的字符串
问题描述
我需要在另一个字符串中找到一个数字,后跟一个特定的字符串。
初始字符串可能是: some text 0.25mcg some more text some text 25mcg some more text
所以这个数字可能是小数。我需要能够返回数字(所以 0.25 或 25),只要数字后面跟着“mcg”
谁能帮我吗。这不起作用:
if(preg_match('(\d+mcg)', $item, $match))
解决方案
另一种选择是捕获带有可选小数部分的数字\d+(?:\.\d+)?
并使用字边界\b
来防止匹配成为更大字的一部分。
\b(\d+(?:\.\d+)?)mcg\b
代码示例
$re = '/\b(\d+(?:\.\d+)?)mcg\b/';
$str = 'some text 0.25mcg some more text some text 25mcg some more text';
preg_match_all($re, $str, $matches);
print_r($matches[1]);
输出
Array
(
[0] => 0.25
[1] => 25
)
如果您只想要匹配而不是捕获组,您也可以选择积极的前瞻(?=
。
\b\d+(?:\.\d+)?(?=mcg\b)
推荐阅读
- filter - 使用 Query 显示多行,按人名过滤
- python - 将键,值动态添加到python中的字典
- html - img src 找不到图像路径
- java - 如何将字符串转换为从 html 文本框中接收到的数组,然后将其传输到存储过程?
- android - 为什么 RecylerView.notifyDataSetChanged() 添加导航组件后停止工作?
- excel - 基于条件颜色的格式
- docker - Docker - 在 Dockerfile 或外部 shell 脚本中安装东西
- javascript - 如何使用 android studio 创建一个带有存储在 Web 服务器上的数组的 android 应用程序?
- amazon-web-services - Redshift 函数语法
- r - R:有没有办法覆盖已安装的 R 包中的数据?