猿问

用正则表达式替换多个单词

我想替换一些文字:

我的文字看起来像:

这是对大量辛勤工作的巨大回报。非常小,[[结果]]开发人员会将其烧毁。Occecat 非常高兴我会不带任何脂肪来。

我想替换 [[...]] 内的文本。问题是如果括号之间有更多单词,它就不会渲染。

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

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


陪伴而非守候
浏览 91回答 2
2回答

忽然笑

不\d匹配任何空格。尝试"/\[\[(.+?)\]\]/“(未测试)我添加了?(非贪婪),以防您有多个案例需要匹配。

呼如林

如果您想制作一个“神秘文本”,双方括号之间的每个字母都有一个星号,您可以将此模式与以下内容一起使用preg_replace():$pattern = '~(?: \G (?!\A) | \[\[ (?= [^]]* ]] ) ) \s* \K [^]\s]~x'; $result = preg_replace($pattern, '*', $str);演示对于每个单词一个星号,只需将+量词添加到最后一个字符类即可。否则,如果您只想用一个星号来表示所有内容,Sil 的答案是好的(最终带有 s 修饰符)。
随时随地看视频慕课网APP
我要回答