2015-06-12 51 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+是兩個或更多同一位:我們記住的數字,然後是一個或多個記住的事物。

相關問題