在字符串vba中2个或更多次在组中使用的2个或更多字母字符的正则表达式模式

时间:2017-10-20 13:37:32

标签: regex vba excel-vba excel

我需要一个正则表达式模式,让我们说我希望模式是一个组中使用的任何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?

但是我感觉非常不专业/手动,如果数字越来越高,必须永远添加相同的语句......

1 个答案:

答案 0 :(得分:4)

您可以使用

([a-z]{2,})\1{1,100}

请参阅regex demo

在这里,

  • ([a-z]{2,}) - 第1组捕获2个或更多小写ASCII字母
  • \1{1,100} - 在第1组中捕获的相同字母连续出现1到100次。\1numbered backreference,可以访问相应的组值并让您完全匹配文字(不是模式!)。

请注意,如果您需要恰好匹配7个或 n 次出现,请使用{7} limiting quantifier