如何删除字符串中重复的字符序列?

How to remove repeated sequence of characters in a string?

想象一下如果:

$string = "abcdabcdabcdabcdabcdabcdabcdabcd";

如何删除字符串中重复的字符序列(所有字符,而不仅仅是字母),以便新字符串只有 "abcd"?也许 运行 一个函数 returns 一个删除了重复的新字符串。

$new_string = remove_repetitions($string);

删除重复之前可能的字符串总是像上面那样。我不知道还能怎么解释,因为英语不是我的母语。其他例子是,

$string = “EqhabEqhabEqhabEqhabEqhab”;
$string = “o=98guo=98guo=98gu”;

请注意,我希望它也适用于其他字符序列。我尝试使用正则表达式,但我找不到实现它的方法。我还是 php 和 Regex 的新手。

详情:https://algorithms.tutorialhorizon.com/remove-duplicates-from-the-string/

在不同的编程中有不同的方法来从字符串中删除相同或重复的字符。 示例:在 PHP

<?php
$str = "Hello World!";
echo count_chars($str,3);
?> 

输出:!HWdelor https://www.w3schools.com/php/func_string_count_chars.asp

在这里,如果我们想去除重复的子串,除了知道我们想要收集什么之外,我想不出其他方法,因为模式看起来很复杂。

在那种情况下,我们可以简单地使用一个捕获组并在其中添加我们想要的输出并删除其他所有内容:

(abcd|Eqhab|guo=98)

我猜这应该是更简单的方法。

测试

$re = '/.+?(abcd|Eqhab|guo=98).+/m';
$str = 'abcdabcdabcdabcdabcdabcdabcdabcd
EqhabEqhabEqhabEqhabEqhab
o98guo=98guo=98guo=98guo=98guo=98guo=98guo98';
$subst = '';

$result = preg_replace($re, $subst, $str);

echo $result;

Demo

您没有说清楚要删除的内容。 "sequnece of characters" 可以小到只有 1 个字符。

所以这个简单的正则表达式应该可以工作

preg_replace ( '/(.)(?=.*?)/g','' 'abcdabcdabcdabcdabcdabcd');