我正在寻找一个简单的正则表达式,以匹配重复超过10次左右的相同字符.例如,如果我有一个散落着水平线的文档:
=================================================
Run Code Online (Sandbox Code Playgroud)
它将匹配=字符行,因为它重复超过10次.请注意,我希望这适用于任何角色.
例如我有字符串:
aacbbbqq
Run Code Online (Sandbox Code Playgroud)
结果我想要以下匹配:
(aa, c, bbb, qq)
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样写:
([a]+)|([b]+)|([c]+)|...
Run Code Online (Sandbox Code Playgroud)
但我认为我很丑,并寻求更好的解决方案.我正在寻找正则表达式解决方案,而不是自编有限状态机.
任何人都可以给我一个Java正则表达式来识别字符串中的重复字符吗?我只是寻找立即重复的字符,它们可以是字母或数字.
abccde < - 寻找这个(立即重复c)
abcdce < - 不是这个(c被另一个角色分开)
我将如何删除重复的字符(例如,删除信件k中cakkkke为它是cake)?
一种直接的方法是循环遍历字符串的每个字符,如果字符不是前一个字符的重复,则将字符串的每个字符附加到新字符串.
以下是一些可以执行此操作的代码:
$newString = '';
$oldString = 'cakkkke';
$lastCharacter = '';
for ($i = 0; $i < strlen($oldString); $i++) {
if ($oldString[$i] !== $lastCharacter) {
$newString .= $oldString[$i];
}
$lastCharacter = $oldString[$i];
}
echo $newString;
Run Code Online (Sandbox Code Playgroud)
有没有办法使用正则表达式或内置函数更简洁地做同样的事情?
我必须创建一个正则表达式,允许在文本"*ALL"(不区分大小写)中包含az,AZ和0-9范围内的OR字符,它们必须长度为17个字符.我没有遇到任何问题:
^([\*][Aa][Ll][Ll]|[a-zA-Z0-9]{17})$
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是如何改变它,以便只要输入相同的字符多次(例如17 x)就可以获取它.