1

我一直在尝试编造一个搜索数字模式的正则表达式。例如,正则表达式应该从 172564817256481725648 中提取 1725648。

目前,我有 (\\d+){1+},但它只是返回空白。

4

2 回答 2

4

我不认为你会找到一个正则表达式来做到这一点。您需要更强大的机制来做您正在寻找的事情,其中​​之一就是Robin-Karp 算法

于 2012-04-29T23:35:15.767 回答
2

这将适用于您的示例

^(\d+)\1+$

在 Regexr 上查看

您可以从组 1 中获取找到的模式。

这将匹配相同数字序列的序列。\1是对中匹配内容的反向引用(\d+)。我+在它后面放了一个,所以它需要匹配这个序列直到最后。^将其锚定到字符串的开头和$结尾。

但是你的要求不是很清楚。看到这个

(\d+).*\1

它缺少锚点,并允许.*在搜索模式之间存在内容。但它只会找到字符串中的第一个序列,该序列稍后会在字符串中重复。

Hello1725648Foo987Bar987Foobar1725648  
     |||||||__________________|||||||

它会发现1725648

He987llo1725648FooBar987Foobar1725648
  |||________________|||

它会发现987

123He987llo1725648FooBar987Foobar1725648
|________________________________|

它只会找到1

于 2012-04-30T05:51:16.343 回答