正则表达式不起作用:重复的数字串

时间:2015-06-12 05:36:03

标签: c# regex winforms

我试图创建一个正则表达式来查找重复的数字字符串。 例如:

1     -not matching
11    -matching
122   -matching
1234  -not matching

我使用的是\d+。教程正在讲述

  

“+”类似于“*”,但需要至少重复一次。

但是当我尝试它与任何数字匹配。知道为什么吗?

更新 我试过的教程:http://www.codeproject.com/Articles/9099/The-Minute-Regex-Tutorial

3 个答案:

答案 0 :(得分:2)

^\d*(\d)\1+\d*$

您可以使用此功能。查看演示。\d+会匹配任何中间人1 or more time。您需要使用\1来查找重复的数字。

https://regex101.com/r/hI0qP0/4

答案 1 :(得分:2)

它运作正常。 \d+不是特定数字的重复,而是一个或多个\d的重复。 \d+将匹配1(一个或多个数字),12(一个或多个数字),122(一个或多个数字)......您会看到这个想法。如果您想要看到两次或更多次重复,则需要说出\d\d+\d{2,} - 但这也说明您需要两个或更多个数字,而不是两个或更多个数字相同的数字。要说,你需要反向引用:(\d)\1+是两个或多个相同的数字:我们记住的数字,然后是一个或多个记住的数字。

答案 2 :(得分:2)

正则表达式中的重复构造,+*{x},不要重复“您第一次找到的内容”,他们重复“发现事物的模式”

所以这个:

\d+

找不到一个数字,然后匹配该数字的序列,而是首先找到一个数字,然后尝试找到另一个数字,然后再找另一个数字等。

如果你想让它重复“发现的东西”,你必须明确说出来:

(\d)\1+

此处的\1表示“我将再次匹配第一组中的任何内容”,此正则表达式应匹配相同数字的序列,而不是数字序列