php - 用正则表达式替换多个单词
问题描述
我想替换一些文本:
我的文字看起来像:
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+)\]\]/"
解决方案
如果您想为双方括号之间的每个字母制作一个带有一个星号的“神秘文本”,您可以将此模式与preg_replace()
:
$pattern = '~(?: \G (?!\A) | \[\[ (?= [^]]* ]] ) ) \s* \K [^]\s]~x';
$result = preg_replace($pattern, '*', $str);
对于每个单词一个星号,只需将+
量词添加到最后一个字符类。
否则,如果您只想为所有内容使用一个星号,Sil 的答案是好的(最终使用 s 修饰符)。
推荐阅读
- python - 如何在python中使用for循环从列表中为变量赋值
- python - 如何通过 git-lfs 将训练有素的 NLP 模型推送到 huggingface.co?
- python - 生成具有特定 R 方的数据
- xamarin.forms - Xamarin Forms:捏缩放和滚动不适用于 WebView 内容
- c - 尝试将 argv[1] 值(作为 cmd 参数传递的字符串)复制到动态分配的 $dyn var 时,调用 GDB 中的 strcpy() 函数不起作用
- asp.net-mvc - 网址中的大写字母重要吗?
- menu - 禁用键盘句柄 AppBar TabPanel MUI
- rabbitmq - 使用 MassTransit 在 Mediator ConsumeContext 范围内发布/发送
- sql - 从存储在数据库中的 XML 查询为 nvarchar
- javascript - 如何使用 Angular CDK 执行图像拖放?