2012-11-23 67 views
0

我試圖解決,如果我可以凝聚一個正則表達式的數量到一個單一的,但不能完全到達那裏。正則表達式匹配不同地方的2個相同的字符類

我試圖尋找一對匹配的字符,這可能是一個範圍之一。

1 text 1  <--- This is a match 
1 text 2  <--- This is not a match 
2 text 1  <--- This is a match 

的選項列表是有限的,所以我知道我可以只單獨測試每一種情況下,如:

1(.+?)1 
2(.+?)2 

不過,我試圖用分組要做到這一點在一個查詢中。

[1-8](.+?)[1-8] 

但是這(錯誤地)相匹配:沿着線的東西

1 text 2  <--- This is not a match 

有沒有一種方法,我可以保證的是,第二個括號列表比賽是一樣的比賽在第一支架?即如果第一個匹配1,那麼第二個也必須是1?

回答

3

您需要使用組,然後參考該組

([1-8])(?:.+?)\1 

\1first捕獲組即([1-8])

2

你想用back reference

([1-8])(.+?)\1 

這樣的前面和後面的角色必須匹配整個事物才能被視爲匹配。

相關問題