2012-05-25 92 views
2

後我有一個字符串,像這樣:正則表達式匹配模式前和連字符

"(33) 3669-0210 Gerencia" 

我試圖讓所有的數字後/前連字符( - ),直到找到最終使用正則表達式既是空白在C#中。

輸出應該是

"3669-0210" 

有人可以用正則表達式的表達式,會在C#中工作的幫助?

回答

6

您可以使用此表達式:

\b\d+-\d+\b 

這是一個非捕獲字邊界標誌,後面跟着一個或多個數字,後跟一個連字符,一個或多個數字,最後另一非捕獲單詞邊界。

如果匹配的數字總是4個位數,這是更準確:

\b\d{4}-\d{4}\b 
+1

只要'\ d + - \ d +'應該作爲空格不是數字。 – Stefan

+0

'\ d'不會捕獲'x'或'Gerencia'。 – Stefan

+0

@Stefan哦,當然你是對的!這是一個愚蠢的評論,我很抱歉。 – dasblinkenlight

3

"[0-9]+-[0-9]+"這應該是足夠

說明:

[0-9]+ - 至少一個數字

- - 連字號

[0-9]+ - 至少一個數字

1

您可以使用此表達式:

\S+-\S+ 

它是一個或多個非空白字符,後跟一個連字符,後面跟着一個或多個非空白字符。

+0

這將匹配「數字 - 數字」以外的很多東西。 – kevlar1818