想象一下:
$string = "abcdabcdabcdabcdabcdabcdabcdabcd";
如何删除字符串中重复的字符序列(所有字符,而不仅仅是字母),以便新字符串仅包含“ abcd”?也许运行一个返回删除了重复项的新字符串的函数。
$new_string = remove_repetitions($string);
删除重复项之前可能的字符串始终如上。我不知道该怎么解释,因为英语不是我的母语。其他例子是
$string = “EqhabEqhabEqhabEqhabEqhab”;
$string = “o=98guo=98guo=98gu”;
请注意,我也希望它也可以与其他字符序列一起使用。我尝试使用Regex,但无法找到实现它的方法。我还是php和Regex的新手。
答案 0 :(得分:0)
有关详细信息:https://algorithms.tutorialhorizon.com/remove-duplicates-from-the-string/
在不同的编程中,从字符串中删除相同或重复字符的方式不同。 示例:在PHP
<?php
$str = "Hello World!";
echo count_chars($str,3);
?>
OutPut:!HWdelor https://www.w3schools.com/php/func_string_count_chars.asp
答案 1 :(得分:0)
在这里,如果我们希望删除重复的子字符串,那么除了了解我们希望收集的内容之外,我别无选择,因为这些模式看起来很复杂。
在这种情况下,我们可以简单地使用捕获组并在其中添加所需的输出,然后删除其他所有内容:
(abcd|Eqhab|guo=98)
我想这应该是更简单的方法。
$re = '/.+?(abcd|Eqhab|guo=98)\1.+/m';
$str = 'abcdabcdabcdabcdabcdabcdabcdabcd
EqhabEqhabEqhabEqhabEqhab
o98guo=98guo=98guo=98guo=98guo=98guo=98guo98';
$subst = '$1';
$result = preg_replace($re, $subst, $str);
echo $result;
答案 2 :(得分:0)
您没有告知要删除的内容。 “字符序列”可以小到1个字符。
所以这个简单的正则表达式应该起作用
preg_replace ( '/(.)(?=.*?\1)/g','' 'abcdabcdabcdabcdabcdabcd');