【问题标题】:Can't remove repeating word syllable - PHP regex无法删除重复的单词音节 - PHP regex
【发布时间】:2013-06-11 03:45:58
【问题描述】:

最后一天,我尝试删除重复的单词音节,例如:hahadadadawkwkwk 等 我尝试使用这个:preg_replace("/^(.*)(\\1+)$/", "", $text)

现在,我遇到了一个问题。情况是,如果:

  1. $text=haha$text=wkwkwk ==> $text 中的文本将被删除
  2. $text=text beside haha ==> $text 中的文本完好无损。

你可以试试这个:

<?php
$txt = 'removed : '.preg_replace("/^(.*)(\\1+)$/", "", "hahaha").'<br>not remove : '.preg_replace("/^(.*)(\\1+)$/", "", "there is text beside hahaha");
echo $txt;
?>

我希望我可以删除文本中重复的单词音节,例如 no.2 中的 $text。 所以,输出 2 是text beside

【问题讨论】:

  • 尝试使用我在here 的回答。请注意,它不会匹配haha,但会匹配hahaha。您当然可以将表达式更改为([b-df-hj-np-tv-xz][aeiouy](?:[a-z])?|[aeiouy][b-df-hj-np-tv-xz](?:[a-z])?)(\1){1,}

标签: php regex duplicates


【解决方案1】:

移除锚点

/(.*)(\\1+)/

如果您不想删除像lelet 这样的单词,请使用单词边界:

/(.*)(\\1+)\b/

【讨论】:

  • 嗨@M42,像“lelet”这样的文字怎么样?我不想删除“lelet”。你可以吗?
猜你喜欢
  • 2013-05-28
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 2012-12-27
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多