当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《正则表达式匹配任何重复超过10次的字符》经验,为你挑选了2个好方法。

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

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

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



1> 小智..:

你需要的正则表达式是/(.)\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,}$/;



2> Michał Nikla..:

在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. aaaaaaaaaaaaaaa
3. cccccccccccccccccccc
5. eeeeeeeeeeee

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有