假设我有一系列数字
1 2 3 4 1 2 3 4
正如你所看到的,这里有一个循环:
1 2 3 4
现在我正在尝试使用正则表达式来匹配模式。模式可以是序列长度的一半或2个数字长。这就是我到目前为止所拥有的
Pattern cycle = Pattern.compile("((\\d+\\s)+(\\d+\\s))\\1");
我收到一串由空格分隔的数字。我试图使用捕获组但不理解它。有什么帮助吗?
答案 0 :(得分:4)
您可以使用:
(\d(?:\s+\d)+)\s+\1
这将匹配由空格分隔的两个或多个数字,捕获它并查找在另一个空格字符后面捕获的内容:
( # begin capturing group
\d # a digit, followed by
(?: # begin non capturing group
\s+ # one or more space characters, followed by
\d # a digit
)+ # end non capturing group, repeated once or more,
) # end capturing group `\1`, followed by
\s+ # one or more spaces, followed by
\1 # the exact content of the first captured group
注意:它假设重复中的间距完全相同!
答案 1 :(得分:0)
我只是想更好地理解这个问题。您的问题是否类似于检测给定字符串中的循环/模式?
与此模式类似的东西?
"([0-9]+?)\1+"
此模式尝试捕获给定数字流中的重复模式。
与此问题What is wrong with my regex Pattern to find recurring cycles in Python?中讨论的类似。