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

我正在寻找一个简单的正则expression式来匹配相同的字符重复超过10次左右。 所以举个例子,如果我有一个水平线的文件:

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

它会匹配=字符的行,因为它重复了10次以上。 请注意 ,我希望这可以用于任何angular色。

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

testing:

 #!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,}要求九个或更多相同的字符。 因此,这匹配了十个或更多的任何单个字符。

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

如果整个string应该由9个或更多相同的字符组成,请在模式周围添加锚点:

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

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

  • (。)从一个字符(任何字符)
  • \ 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 

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

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

使用{10,}运算符:

 $: cat > testre ============================ == ============== $: grep -E '={10,}' testre ============================ ============== 

您还可以使用PowerShell快速replace单词或字符提示。 PowerShell用于Windows。 当前版本是3.0。

 $oldfile = "$env:windir\WindowsUpdate.log" $newfile = "$env:temp\newfile.txt" $text = (Get-Content -Path $oldfile -ReadCount 0) -join "`n" $text -replace '/(.)\1{9,}/', ' ' | Set-Content -Path $newfile 

在某些应用程序中,您需要删除斜杠才能使其正常工作。

 /(.)\1{9,}/ 

或这个:

 (.)\1{9,} 
 ={10,} 

匹配=重复10次或更多次。

它看起来像你需要的正则expression式是:8 = * D

 grep -E "8=*D" sampletext