首页 > 解决方案 > 正则表达式替换任何与捕获组不匹配的内容

问题描述

我有一个如下字符串:[Monster:Test]Maps=1,5,2,3[Monster:Test2]Maps=2-5

我需要替换不必要的文本字符串。

我想保留的唯一文本是括号,包括括号之间的文本。所以只有[Monster:Test]并且[Monster:Test2]应该保留。

所以我找到它的正则表达式是:\\[(.*)\\]

我不明白如何替换与我的组不匹配的任何内容。

标签: regexpascal

解决方案


怎么用preg_match_all

$s = "[Monster:Test]Maps=1,5,2,3[Monster:Test2]Maps=2-5~";
preg_match_all("/\[[^\]]+\]/", $s, $m);
echo implode($m[0]);

结果成:

[Monster:Test][Monster:Test2]

这是否按要求工作?


推荐阅读