php - 去掉括号外的文字

标签 php regex preg-replace

$text = 'remove this text (keep this text and 123)';

echo preg_replace('', '', $text);

它应该输出:

(keep this text and 123)

最佳答案

这会做到:(并且也适用于嵌套的 ())

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

这里有几个测试用例:

Input:
Non-nested case: 'remove1 (keep1) remove2 (keep2) remove3'
Nested case:     'remove1 ((keep1) keep2 (keep3)) remove2'

Output:
Non-nested case: '(keep1)(keep2)'
Nested case:     '(keep1) keep2 (keep3)'

关于php - 去掉括号外的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293283/

相关文章:

javascript - 无法连接到数据库-MySQLi错误

java - 我的 java 正则表达式有问题

java - 在 JPA CriteriaBuilder 中使用正则表达式

regex - 我需要一个正则表达式来删除特定字符之前的空格

php - 如果是 URL 的一部分,如何忽略正则表达式?

php - 如何使用 Symfony2 使 form_rest() 不显示字段?

php - 用php加入postgres上的表

php - 同时访问网站

php - 如何修改此正则表达式以包含 https?

PHP - 在字符串中添加指向 URL 的链接(如果不存在)