2015-10-13 16 views
0

我有像行的文件:捕獲數量,而忽略一個字符

528627266255,ANY VALUE,ANY VALUE,812323432-1 
736353553,ANY OTHER VALUE,9123234321 

我需要捕獲與10位與8或9開頭的號碼,而忽略了 - 如果發現字符「」。

我試着'[8-9]?[8-9]\d{8}-\d'正則表達式,並且在數字有「 - 」時正常工作,但當不包括這個減號時不起作用。

我的問題是,我怎麼能抓住兩種情況下使用或不使用減號?

+2

'[8-9] [8-9] \ d {8} - \ D' –

+0

感謝@JorgeCampos –

+0

如果你?需要捕捉10位數字,那麼這個'[8-9]?'不是你想要放入正則表達式中的東西! – sln

回答

1

這裏是一個工作regex顯示多個比賽上,讓測試數據如下正則表達式:

[8-9]?[8-9]\d{8}-?\d 

如果你不想在一開始數量也匹配,那麼

\b[8-9]?[8-9]\d{8}-?\d 

here

0

這似乎是做你所說的。

# [89](?:-?\d){9} 

[89]     # Starts with 8 or 9 
(?: -? \d){9}  # Nine more digits, ignore minus sign 
0

您也可以使用下面的正則表達式:

\b([8-9]{1}[0-9-]{9,10})\b 
+0

這個'[0-9 - ] {9,10}''正則表達式的一部分將匹配'---------'。 – sln