我需要一个正则表达式模式,让我们说我希望模式是一个组中使用的任何2个或更多个字母字符(例如:" ab" /" abb" /" abbb" /),在一个字符串中连续3次或更多次(例如:" ababab" /" abbabbabb" /" abbbabbbabbb& #34;),我有这个函数,可以找到一个字符在我想要适应的字符串中连续使用3次或更多次。
Function TripleChars(S As String) As Boolean
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.Pattern = "([a-z])\1\1"
.IgnoreCase = True
TripleChars = .test(S)
End With
End Function
我正式使用正则表达式我尝试了一个免费的模式生成器并且得到了:
([a-z]([a-z])([a-z])?([a-z])?)\1\1\1?\1?
但是我感觉非常不专业/手动,如果数字越来越高,必须永远添加相同的语句......
答案 0 :(得分:4)
您可以使用
([a-z]{2,})\1{1,100}
请参阅regex demo
在这里,
([a-z]{2,})
- 第1组捕获2个或更多小写ASCII字母\1{1,100}
- 在第1组中捕获的相同字母连续出现1到100次。\1
是numbered backreference,可以访问相应的组值并让您完全匹配文字(不是模式!)。请注意,如果您需要恰好匹配7个或 n 次出现,请使用{7}
limiting quantifier。