php - 在字符前后插入字符,但忽略两个字符之间的空格
问题描述
如何在字符之前和之后插入字符,但忽略两个或多个字符之间的空格。
我尝试这个正则表达式,但它返回不正确
$str = " echo '<pre>';";
$replaces = preg_replace('/(\S{3,})/', '[:$1:]',$str);
var_dump($replaces);
但它会返回以下内容
[:echo:] [:'<pre>';:]
我想要的是这个
[:echo '<pre>';:]
提前致谢
解决方案
您可以使用
preg_replace('~\S{3,}(?:\s\S{3,})*~', '[:$0:]', $str)?
preg_replace('~\S+(?:\s\S+)*~', '[:$0:]', $str)?
请参阅正则表达式演示。匹配三个或更多连续的\S{3,}
非空白字符,同时\S+
匹配这些字符中的一个或多个。
请注意,您不需要将整个匹配包含在捕获组中,您可以$0
在替换模式中使用来引用整个匹配。
推荐阅读
- mysql - MYSQL:根据日期/小时将值从一个表传输到另一个表
- python - 如何在熊猫,Python(Jupyter Notebook)中根据出生日期计算年龄
- python - ValueError:标签和X的尺寸必须兼容
- javascript - 将 Redux 值传递给 Material UI Radio Group
- java - 如何在通过 java 程序执行命令时为命令提示符编写/提供输入
- android - 我想在 recyclerview 中显示编辑文本数据,但它不起作用
- r - 如何计算 R 中的百分位数 [0,1) 使得值低于百分位数
- android - 将文件上传到 Firebase 存储的代码中的两个任务是什么?
- gradle - 使用 bash 命令通过依赖代码获取库
- python - 使用 numpy 计算数据集的样本方差