为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式匹配任何重复超过10次的字符

/ 猿问

正则表达式匹配任何重复超过10次的字符

若吾皇 2019-07-30 17:37:43

正则表达式匹配任何重复超过10次的字符

我正在寻找一个简单的正则表达式,以匹配重复超过10次左右的相同字符。例如,如果我有一个散落着水平线的文档:

=================================================

它将匹配=字符行,因为它重复超过10次。请注意,我希望这适用于任何角色。


查看完整描述

3 回答

?
HUWWW

你需要的正则表达式是/(.)\1{9,}/。


测试:


#!perl

use warnings;

use strict;

my $regex = qr/(.)\1{9,}/;

print "NO" if "abcdefghijklmno" =~ $regex;

print "YES" if "------------------------" =~ $regex;

print "YES" if "========================" =~ $regex;

这里\1称为反向引用。它引用.括号之间的点所捕获的内容  (.),然后是{9,}九个或更多相同字符的请求。因此,这匹配任何单个字符中的十个或更多。


虽然上面的测试脚本是在Perl中,但这是非常标准的正则表达式语法,应该适用于任何语言。在某些变体中,您可能需要使用更多的反斜杠,例如Emacs会让您\(.\)\1\{9,\}在这里写。


如果整个字符串应包含9个或更多相同的字符,请在模式周围添加锚点:


my $regex = qr/^(.)\1{9,}$/;


查看完整回答
反对 回复 2019-07-30
?
米琪卡哇伊

在Python中你可以使用 (.)\1{9,}

  • (。)从一个char(任何字符)创建组

  • \ 1 {9,}匹配第一组中的九个或更多字符

例:

txt = """1. aaaaaaaaaaaaaaa
2. bb
3. cccccccccccccccccccc
4. dd
5. eeeeeeeeeeee"""rx = re.compile(r'(.)\1{9,}')lines = txt.split('\n')for line in lines:
    rxx = rx.search(line)
    if rxx:
        print line

输出:

1. aaaaaaaaaaaaaaa3. cccccccccccccccccccc5. eeeeeeeeeeee


查看完整回答
反对 回复 2019-07-30
?
一只名叫tom的猫

.匹配任何角色。与已经提到的花括号一起使用:

$: cat > test====================================oo
ooooooooooooooooooooooo


$: grep -E '(.)\1{10}' test============================ooooooooooooooooooooooo


查看完整回答
反对 回复 2019-07-30

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信