是否可以选择只出现一次的字符?
我对否定后向现象很熟悉,并尝试了以下方法
/(.)(?<!\1.*)/
但是无法正常工作。
示例:
given AXXDBD it should output ADBD
^^ - this is unacceptable
given 123558 it should output 1238
^^ - this is unacceptable
提前感谢您的帮助
答案 0 :(得分:5)
可能有很多方法,但是我认为您正在寻找类似的东西
(.)\1{1,}
也就是说,任何字符后跟相同字符至少一次。
您的问题同时带有PHP和JS标记,因此:
PHP:
$str = preg_replace('/(.)\1{1,}/', '', $str);
JS:
str = str.replace(/(.)\1{1,}/g, '');
答案 1 :(得分:4)
不使用正则表达式:
function not_twice ($str) {
$str = (string)$str;
$new_str = '';
$prev = false;
for ($i=0; $i < strlen($str); $i++) {
if ($str[$i] !== $prev) {
$new_str .= $str[$i];
}
$prev = $str[$i];
}
return $new_str;
}
删除连续的字符(1+),并在需要的情况下将数字转换为字符串。
测试:
$string = [
'AXXDBD',
'123558',
12333
];
$string = array_map('not_twice', $string);
echo '<pre>' . print_r($string, true) . '</pre>';
输出:
Array
(
[0] => AXDBD
[1] => 12358
[2] => 123
)