首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >匹配重复次数超过10次的任何字符的正则表达式

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

Stack Overflow用户
提问于 2009-11-02 19:20:32
回答 9查看 159.5K关注 0票数 129

我正在寻找一个简单的正则表达式来匹配相同的字符被重复超过10次左右。例如,如果我有一个文档,上面布满了水平线:

代码语言:javascript
复制
=================================================

它将匹配=字符所在的行,因为它重复了10次以上。注意到,我希望这对任何角色都有效。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-11-02 19:32:26

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

测试:

代码语言:javascript
复制
#!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,}请求9个或更多相同字符。因此,这将匹配10个或更多的任何单个字符。

尽管上面的测试脚本是用Perl编写的,但这是非常标准的regex语法,应该适用于任何语言。在一些变体中,你可能需要使用更多的反斜杠,例如Emacs会让你在这里写\(.\)\1\{9,\}

如果整个字符串应由9个或9个以上相同的字符组成,请在模式周围添加锚点:

代码语言:javascript
复制
my $regex = qr/^(.)\1{9,}$/;
票数 189
EN

Stack Overflow用户

发布于 2009-11-02 19:35:54

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

  • (.)makes group from one char (任意char)
  • \1{9,}匹配第一个组中的九个或更多字符

示例:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
1. aaaaaaaaaaaaaaa
3. cccccccccccccccccccc
5. eeeeeeeeeeee
票数 33
EN

Stack Overflow用户

发布于 2009-11-02 19:35:02

.可以匹配任何字符。与前面提到的花括号连用:

代码语言:javascript
复制
$: cat > test
========
============================
oo
ooooooooooooooooooooooo


$: grep -E '(.)\1{10}' test
============================
ooooooooooooooooooooooo
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1660694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档