如何删除包含特定文本的整个句子?

时间:2011-09-12 20:14:04

标签: php regex

到目前为止,我有这个:

preg_replace("([^\.\?\!]NNNNNNNNNN)[\.\?\!]","",$string);

我也试过

preg_replace("([^\.\?\!]\N\N\N\N\N\N\N\N\N\N)[\.\?\!]","",$string);

但它正在删除$ string中的所有内容。

我需要找到的文本(并删除包含的句子)是:“NNNNNNNNNN”

想法?

1 个答案:

答案 0 :(得分:4)

这样的事情:

preg_replace("/(^|[.?!])[^.?!]*N{10}[^.?!]*[.?!]/g", "$1", $string);

我会把它分解,但我不知道它是否会奏效。

  • (^|[.?!]) - 上一句结束 - 捕获
  • [^.?!]* - 可能是多个不是句末指示符的内容
  • N{10} - 您要匹配的内容
  • [^.?!]* - 可能是多个不是句末指示符的内容
  • [.?!] - 句子的结尾

PHP中的结果:

  

user @ domain:〜$ php -a   交互式shell

     

php> $ string =“这是一个测试。这是NNNNNNNNNN。这仍然是一个测试!或者是它?”;

     

php> print preg_replace(“/(^ | [。?!])[^。?!] * N {10} [^。?!] * [。?!] /”,“$ 1”,$ string);

     

这是一个测试。这还是一个考验!或者是吗?