想象一下,如果:
$string = "abcdabcdabcdabcdabcdabcdabcdabcd";
如何删除字符串中重复的字符序列(所有字符,而不仅仅是字母表),以便新字符串只有"abcd"?也许是运行一个函数,返回一个删除了重复项的新字符串。
$new_string = remove_repetitions($string);
删除重复项之前可能的字符串始终类似于上面。我不知道还能怎么解释,因为英语不是我的第一语言。其他的例子有:
$string = “EqhabEqhabEqhabEqhabEqhab”;
$string = “o=98guo=98guo=98gu”;
请注意,我希望它与其他字符序列以及工作。我试着使用正则表达式,但我想不出一种方法来完成它。我仍然是php和Regex的新手。
发布于 2019-06-02 22:43:09
详情请访问: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
发布于 2019-06-03 01:32:21
在这里,如果我们想要删除重复的子串,除了知道我们想要收集什么之外,我想不出其他方法,因为模式看起来很复杂。
在这种情况下,我们可以简单地使用一个捕获组,并在其中添加我们想要的输出,并删除其他所有内容:
(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;
发布于 2019-06-03 01:35:39
您并没有确切地说明要删除的内容。“字符序列”可以小到只有1个字符。
所以这个简单的正则表达式应该可以工作
preg_replace ( '/(.)(?=.*?\1)/g','' 'abcdabcdabcdabcdabcdabcd');
https://stackoverflow.com/questions/56415789
复制相似问题