我有一个包含 1 和 0 的字符串。我想确定是否有 1 个或多个字符的子串至少连续重复 3 次。例如,字符串“000”有一个长度为 1 的子字符串,由重复 3 次的单个零字符组成。字符串 '010010010011' 实际上有 3 个这样的子串,每个重复 3 次('010'、'001' 和 '100')。
是否有正则表达式可以在不知道特定模式或模式长度的情况下找到这些重复模式?我不关心模式是什么,也不关心它的长度是多少,只关心字符串包含一个 3-peat 模式。
最佳答案
这里有一些可能有用的东西,但是,它只会告诉你是否有 a 模式重复了三次,并且(我不认为)不能扩展来告诉你是否有是其他人:
/(.+).*?\1.*?\1/
打破它:
(.+) matches any 1 or more characters, starting anywhere in the string
.*? allows any length of interposing other characters (0 or more)
\1 matches whatever was captured by the (...+) parentheses
.*? 0 or more of anything
\1 the original pattern, again
如果您希望重复发生在紧邻的位置,则使用
/(.+)\1\1/
…正如@Buh Buh 所建议的那样——\1
与 $1
符号可能会有所不同,具体取决于您的正则表达式系统。
关于regex - 使用正则表达式查找任意长度的连续 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658903/