首页 > 解决方案 > 用正则表达式替换多个单词

问题描述

我想替换一些文本:

我的文字看起来像:

Magna adipisicing veniam est amet labore do mollit deserunt esse。Ipsum minim sit [[consectetur qui consequat]] elit id irure。Occaecat magna do voluptate commodo veniam nulla adipisicing。

我想替换 [[...]] 中的文本。问题是如果括号之间有更多的单词,它将不会呈现。

这是我目前的正则表达式:

"/\[\[(\w+)\]\]/"

标签: phpregex

解决方案


如果您想为双方括号之间的每个字母制作一个带有一个星号的“神秘文本”,您可以将此模式与preg_replace()

$pattern = '~(?: \G (?!\A) | \[\[ (?= [^]]* ]] ) ) \s* \K [^]\s]~x';

$result = preg_replace($pattern, '*', $str);

演示

对于每个单词一个星号,只需将+量词添加到最后一个字符类。

否则,如果您只想为所有内容使用一个星号,Sil 的答案是好的(最终使用 s 修饰符)。


推荐阅读