到目前为止,我有这个:
preg_replace("([^\.\?\!]NNNNNNNNNN)[\.\?\!]","",$string);
我也试过
preg_replace("([^\.\?\!]\N\N\N\N\N\N\N\N\N\N)[\.\?\!]","",$string);
但它正在删除$ string中的所有内容。
我需要找到的文本(并删除包含的句子)是:“NNNNNNNNNN”
想法?
答案 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);
这是一个测试。这还是一个考验!或者是吗?