我正在尝试编写一个函数来删除字符串中连续的重复单词。正则表达式找到的任何匹配都是至关重要的。换句话说...删除字符串中的连续重复单词
一个非常非常非常脏狗
应该成为...
一个非常肮脏的狗
我有一个正则表达式这似乎工作得很好(based on this post)
(\b\S+\b)(($|\s+)\1)+
但是,我不知道如何使用preg_replace(或者如果有更好的功能)来实现这一点。现在我已经删除了所有匹配的重复单词,而不留下单词的完整副本。我可以解析变量或特殊指令来保持匹配吗?
我有这个目前...
$string=preg_replace('/(\b\S+\b)(($|\s+)\1)+/', '', $string);
请注意,在交替中使用'$'是没有意义的,因为'$ \ 1'永远不会匹配(您甚至不使用多行修饰符 –