PHP Regex用于删除括号内的引号内的内容

时间:2014-03-07 05:41:04

标签: php regex word

我想问一下如何删除括号后面引号内的内容?

例如,我有一个字符串:

  

$ text ='我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。   “我有一只鸟”(我说)。来我的家! “你确定?”我说   “是的,当然”(2009)';

我想要这样的结果:

  我有一只狗。我的狗是治愈的。 “我有一只猫”。我的猫很懒。来到   我家! “你确定?”我说。

我已经创建了这个正则表达式:

$return_value = preg_replace('/ "[^"]+"+ \([^\(]+\) /', ' ', $text);

但是结果只是在开头的句子中,而不是所有的句子。

有人知道要解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

输入:

  我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。 “我有一只鸟”(我说)。来我的家! “你确定?”我说“是的,当然”(2009)。

使用:

/ "[^"]+" \([^()]+\)(?:\.(?!\s*$))?/

你得到:

  我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。来我的家! “你确定?”我说。

你的正则表达式\)后面有一个空格,阻止了匹配。我使用了(?:\.(?!\s*$))?,这意味着只有当它不在字符串末尾时匹配一个点。

regex101 demo

答案 1 :(得分:1)

尝试:

echo preg_replace('/"[^"]*"\s*\([^)]*\)\.?/', '', $text);