php - 使用 preg_replace 替换所有匹配项
问题描述
下面的代码完美运行:
$string = '(test1)';
$new = preg_replace('/^\(+.+\)+$/','word',$string);
echo $new;
输出:
word
如果代码是这样的:
$string = '(test1) (test2) (test3)';
如何生成输出:
word word word
?
解决方案
为什么我的正则表达式不起作用?
^ and $
是锚,这意味着匹配应该从字符串的开头开始并扩展到字符串的结尾.
表示匹配除换行符以外的任何内容,+
表示一个或多个,默认情况下,正则表达式本质上是贪婪的,因此它会尝试尽可能多地匹配我们想要匹配的位置,( )
因此我们需要稍微更改模式
您可以使用
\([^)]+\)
$string = '(test1) (test2) (test3)';
$new = preg_replace('/\([^)]+\)/','word',$string);
echo $new;
推荐阅读
- amazon-web-services - 弹性豆茎不复制单个容器日志
- reporting-services - 在 SSRS 中以 CSV 格式导出时如何在列标题中使用星号 (*) 标记
- java - 如何在 Spring java 中获得 RetryTemplate.execute 的结果?
- spring - 找不到弹簧启动websocket api 404
- javascript - 如何创建自定义 DOM 事件?
- java - getBytes 后的 InputRFC 格式不正确
- ignite - 点燃tomee-webprofile-7.1.0->在Tomee启动报错
- python - 使用 TfidfVectorizer 进行自然语言处理
- docker - Jenkins 在 Docker 容器中运行,但无法在浏览器上启动
- c++ - Google Protobuf:“mutable_foo()”还是“set_allocated_foo()”?