4

我是新手,想知道如何在 php 中使用正则表达式。如果我有类似的文字"haha" "abcabcabc" "hehehe" "cupcupcupcup"(包含重复的音节词)。

如何删除该文本?

(说$text="cupcupcup";“,如何使这个像$text="";

抱歉,如果有同样的问题(我有搜索,但找不到描述我的问题的页面)

谢谢你的赞赏。:)

4

4 回答 4

4

尝试

$txt = preg_replace("/^(.*)(\\1+)$/", "", $txt);

这会在字符串的开头搜索一个序列,然后匹配该字符串的至少一个重复项,然后匹配字符串的结尾。

例如

$txt = preg_replace("/^(.*)(\\1+)$/", "", "cupcupcup");  //=> ""
$txt = preg_replace("/^(.*)(\\1+)$/", "", "cucupcup");   //=> "cucupcup"
于 2013-06-02T15:35:15.197 回答
2

好吧,我想这会做

\b(?=\w*[aeiou]\w*)(\w*)\1+
     -------------
           |
           |->check if its a syllable word

将其替换为""

于 2013-06-02T15:49:24.177 回答
0

如果文字像:

$txt = preg_replace("/(.*)(\\1+)/", "", "the text is  cupcupcup and cupcupcupa");

这将删除cupcupcupand cupcupcupa。如何删除cupcupcup

于 2013-06-10T03:21:09.533 回答
0

所以这就是我想出的:

([b-df-hj-np-tv-xz][aeiouy](?:[a-z])?|[aeiouy][b-df-hj-np-tv-xz](?:[a-z])?)(\1){2,}

在线演示

解释:

  • [b-df-hj-np-tv-xz]: 匹配辅音。
  • [aeiouy]: 匹配元音。
  • [a-z]: 匹配一个字母。
  • ([b-df-hj-np-tv-xz][aeiouy](?:[a-z])?:匹配辅音后跟一个元音,也可以选择后跟一个字母。
  • |[aeiouy][b-df-hj-np-tv-xz](?:[a-z])?): 或者匹配一个元音后跟一个辅音,后跟一个可选的字母。
  • (\1){2,}:重复第 1 组两次或更多次。
于 2013-06-02T16:10:07.060 回答