2012-09-20 60 views
0

我想用正則表達式來驗證特定的字符串,但是我失去了第一個字符。正則表達式與Python中的詞邊界

的字符串是 (06)12345678

我的正則表達式是

r'\b\((0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}' 

但我在我的比賽得到的是

06)12345678 

我真的想首先(也是。

(和)是有條件的,因爲有時不會()。 但這個詞的邊界在那裏,以防止數字像

hello123456789 

匹配

regex = r'\b\(?(0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}' 
matches = re.finditer(regex, '(06)12345678)') 
for match in matches: 
    print match.group(0) 

有什麼想法?

- 例子 -

(06)12345678 should match, (06)12345678 
06 12345678 should match, 06 12345678 
1234567890 should match, 1234567890 
=12345678 no match 

回答

2

嘗試逃跑第二 「(」,不是第一個,最後只有一個 「)」 之前,首先?

現場演示:在這個網站答題http://refiddle.com/6bs

+0

人民如此之快,這是驚人的。 – Fabian

+0

盲注,希望有幫助;) – IProblemFactory

+0

正則表達式運行失敗(解析錯誤) – Wizzard