我有一个似乎无法解决的正则表达式问题。我实际上不知道正则表达式是否可以做到这一点,但我需要在模式末尾匹配一系列字符 n 次。例如。blahblah[AZ]{n} 问题是与结束范围匹配的任何字符都必须完全相同。
例如,我想匹配
- 废话啊啊啊啊
- 胡说八道
- 废话QQQQ
但不是
- 胡说八道
- 废话ZYYYY
是否有一些正则表达式模式可以做到这一点?
我有一个似乎无法解决的正则表达式问题。我实际上不知道正则表达式是否可以做到这一点,但我需要在模式末尾匹配一系列字符 n 次。例如。blahblah[AZ]{n} 问题是与结束范围匹配的任何字符都必须完全相同。
例如,我想匹配
但不是
是否有一些正则表达式模式可以做到这一点?
您可以使用此模式:blahblah([A-Z])\1+
是对第\1
一个捕获组的反向引用,在这种情况下是([A-Z])
。并且+
将匹配该字符一次或多次。要限制它,您可以使用 将 替换+
为特定的重复次数{n}
,例如\1{3}
匹配 3 次。
如果您需要匹配整个字符串,请确保分别以 为前缀^
和以 结尾$
,以便模式变为^blahblah([A-Z])\1+$
您可以在此处阅读有关反向引用的更多信息。
在大多数正则表达式实现中,您可以通过在正则表达式中引用捕获组来完成此操作。对于您的示例,您可以使用以下内容将相同的大写字符匹配五次:
blahblah([A-Z])\1{4}
请注意,要匹配正则表达式n
时间,您需要使用,\1{n-1}
因为一个匹配项将来自捕获组。
blahblah(.)\1*\b
应该适用于几乎所有语言风格。(.)
捕获任何东西中的一个,然后\1*
匹配该(第一个匹配)任意次数。
blahblah([AZ]|[az])\1+ 这应该会有所帮助。