Php 正则表达式替换开头的重复字符
我有下面的php正则表达式代码,它可以查找并替换所有重复字符Php 正则表达式替换开头的重复字符,php,regex,Php,Regex,我有下面的php正则表达式代码,它可以查找并替换所有重复字符 $parts = explode("@", 'aaabbbddddeeesd@yahoo.com'); $username = $parts[0]; $domain = $parts[1]; $out = preg_replace('/(.)\1+/', '$1', $username); $email = $out . '@' . $domain;
$parts = explode("@", 'aaabbbddddeeesd@yahoo.com');
$username = $parts[0];
$domain = $parts[1];
$out = preg_replace('/(.)\1+/', '$1', $username);
$email = $out . '@' . $domain;
print_r($email);
这段代码正在替换所有重复字符,但我只需要替换字符串开头的第一个组
范例aaabbbddddeeesd@yahoo.com我需要输出为abbbddddeeesd@yahoo.com
我尝试过不同的正则表达式,但直到现在为止,只有这个是有效的
谢谢您不用正则表达式,而是可以提取用户名的第一个字符(使用
$username[0]
)和ltrim()
将其从字符串中删除,并将它的1个匹配项放回
$out = $username[0].ltrim($username, $username[0]);
非常奇怪的要求,但您需要将所需的替换字符锚定到字符串的开头:
/^()\1+/
请参阅文档,特别是$limit
参数。您所说的第一组
是指@
之前的内容吗?所以aaabbddddeesd
应该变成abdesd
?或者preg_替换('/(..\1+/','$1','s,1)
或者preg_替换('/^(..\1+/','$1',$s)