PHP regex如何删除重复字符,使每个字符唯一的字符串



如何使用preg_replace()来替换从'aabbaacc'到'abc'的字符串?

目前,我的代码使用str_split()然后array_unique()然后implode()。我认为preg_replace()也可以做到这一点,但我不知道如何做到。

谢谢你的帮助。

似乎适合我的正则表达式是/(.)(?=.*?1)/。请在这里自己测试:

http://regexpal.com/

我还用preg_replace('/(.)(?=.*?1)/', '', 'aaabbbabc')测试了它,它返回预期的abc

希望这对你有帮助

这是我得到的最接近的。然而,它基本上是:如何在Perl中删除重复字符并保留唯一字符?

<?php
    $string = 'aabbaacc';
    $new = preg_replace( '/(.)(?=.*?1)/i','', $string  );
    echo $new;
?>
不幸的是,它没有保持字符串的相同顺序。我不知道这对你是否重要

try this

$string = 'dbbaabbbaac';
$new = preg_replace_callback( array("/(.)\1+/"),function($M){print_r($M);return $M[1];}, $string  );
$new = preg_replace_callback( array('/(.)(.?\1)/i','/(.)(.*?\1)/i'),function($M){return $M[1].trim($M[2],$M[1]);}, $new  );
echo $new."n";

输出
dbac

或this with out Regex

$value="aabbaacc";
for($i=0;$i<strlen($value);$i++){
    $out[$value[$i]]=$value[$i];
}
echo implode("",$out);
输出:

abc

最新更新