2015-06-12 48 views
0

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

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

我用的是\d+。教程是告诉

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

但是,当我试着它是匹配的任何数字。任何想法为什么?

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

+0

你可以链接这样说的教程吗? – vks

+0

我已经添加了有问题的教程链接 –

回答

2

在正则表达式的重复结构,+*{x},不重复“你第一时间发现身边”,他们重复“即发现事物的模式”。

所以这个:

\d+ 

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

如果你想让它重复“它找到了什么”你必须明确地这样说:

(\d)\1+ 

这里的\1说“我将再次匹配第一组中的任何内容“,这个正则表达式应该匹配相同数字的序列,而不是数字的序列

2

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

相关问题