php - 正则表达式 preg_replace php
问题描述
我有随机变量,例如: Strip @ 489.000 Strip 1 @ 489.000 Strip 2 @ 589.000
我需要的输出是:'anything @' 489.000 之后的唯一数字
所以给我输出:489.000 489.000 589.000
热到实现这个使用 php 正则表达式?
$string = ' Strip 1 @ 489.000'; $pattern = ' /(\s\S) @ (\d+)/i'; $replacement = '$3'; echo preg_replace($pattern, $replacement, $string);
解决方案
要获取所有匹配项,请使用
if (preg_match_all('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $matches)) {
print_r($matches[0]);
}
要获得第一场比赛,请使用
if (preg_match('/\S\s@\s+\K\d+(?:\.\d+)?/', $text, $match)) {
print_r($match[0]);
}
细节
\S
- 一个非空白字符\s
- 一个空格@
- 一个@
字符\s+
- 1+ 空格\K
- 匹配重置运算符\d+
- 1+ 位数(?:\.\d+)?
- 一个点和 1+ 个数字的可选序列。
请参阅正则表达式演示。
推荐阅读
- kubernetes - 有没有办法在不从持久卷备份的情况下恢复 neo4j 3.5 数据库?
- python - 打印对函数的每次调用的起源跟踪
- php - 警告:PHP 8.0 中未定义的数组键
- python - VS Code ipython/jupyter 交互环境没有显示完整的回溯?
- java - 如何在黄瓜中实现自定义监听器?
- mlflow - 使用 MLFLow 注册没有权重的模型
- visual-studio-code - 为特定嵌套文件夹设置工作区排除项
- javascript - 如何用javascript重复html结构?
- php - Laravel:2 个带有登录名的注册表单
- javascript - 如何通过传递 JWT 令牌找到论坛或节点?