我试图创建一个正则表达式来查找重复的数字字符串。 例如:
1 -not matching
11 -matching
122 -matching
1234 -not matching
我使用的是\d+
。教程正在讲述
“+”类似于“*”,但需要至少重复一次。
但是当我尝试它与任何数字匹配。知道为什么吗?
更新 我试过的教程:http://www.codeproject.com/Articles/9099/The-Minute-Regex-Tutorial
答案 0 :(得分:2)
^\d*(\d)\1+\d*$
您可以使用此功能。查看演示。\d+
会匹配任何中间人1 or more time
。您需要使用\1
来查找重复的数字。
答案 1 :(得分:2)
它运作正常。 \d+
不是特定数字的重复,而是一个或多个\d
的重复。 \d+
将匹配1
(一个或多个数字),12
(一个或多个数字),122
(一个或多个数字)......您会看到这个想法。如果您想要看到两次或更多次重复,则需要说出\d\d+
或\d{2,}
- 但这也说明您需要两个或更多个数字,而不是两个或更多个数字相同的数字。要说,你需要反向引用:(\d)\1+
是两个或多个相同的数字:我们记住的数字,然后是一个或多个记住的数字。
答案 2 :(得分:2)
正则表达式中的重复构造,+
,*
,{x}
,不要重复“您第一次找到的内容”,他们重复“发现事物的模式”
所以这个:
\d+
找不到一个数字,然后匹配该数字的序列,而是首先找到一个数字,然后尝试找到另一个数字,然后再找另一个数字等。
如果你想让它重复“发现的东西”,你必须明确说出来:
(\d)\1+
此处的\1
表示“我将再次匹配第一组中的任何内容”,此正则表达式应匹配相同数字的序列,而不是数字序列