gpt4 book ai didi

php - 删除 [] {} () 括号外的文本

转载 作者:行者123 更新时间:2023-12-04 15:58:13 26 4
gpt4 key购买 nike

我有一个字符串,我想将文本保留在一对括号内并删除括号外的所有内容:

Hello [123] {45} world (67)
Hello There (8) [9] {0}

期望的输出:
[123] {45} (67) (8) [9] {0}

代码尝试但失败:

$re = '/[^()]*+(\((?:[^()]++|(?1))*\))[^()]*+/';
$text = preg_replace($re, '$1', $text);

最佳答案

如果字符串中的值始终是左括号与右括号配对且没有嵌套部分,则可以匹配所有要保留的括号对,并匹配除括号外的所有其他字符删除。

(?:\[[^][]*]|\([^()]*\)|{[^{}]*})(*SKIP)(*F)|[^][(){}]+

说明

Regex demo | Php demo

示例代码

$re = '/(?:\[[^][]*]|\([^()]*\)|{[^{}]*})(*SKIP)(*F)|[^][(){}]+/m';
$str = 'Hello [123] {45} world (67)
Hello There (8) [9] {0}';

$result = preg_replace($re, '', $str);

echo $result;

输出

[123]{45}(67)(8)[9]{0}

如果要删除所有其他值:

(?:\[[^][]*]|\([^()]*\)|{[^{}]*})(*SKIP)(*F)|.

Regex demo

关于php - 删除 [] {} () 括号外的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64740437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com