2015-05-18 46 views
0

正則表達式:Perl的正則表達式匹配的電話號碼

\b(\(\d{3}\)|\d{3})?[-.]?\d{3}[-]?\d{4}\b 

我的輸入文件有兩種類型的電話號碼。一個,其前三位數字括在括號中,另一個沒有括號。 如:

"(201)-450-4479" ,"234-345-3456" 

我想這兩個類型使用替代運營商的電話號碼一致。

請給我建議。上述表達式需要進行哪些修改才能獲得預期結果?在字 - 邊界非單詞

(\d+\-\d+\-\d+|\(\d+\)\-\d+\-\d+)

+0

取代它除了第一個'\ B'您正則表達式似乎是正確的。 – Toto

回答

0

我會使用這樣的:

(\(?\d+\)?\-\d+\-\d+)

或使用備用操作。如果在(之前出現這樣的邊界,則必須在前面加上一個單詞字符,而不是空格或空格。

參考

print /\b\(/ ? 1 : 0 for '(', ' (', 'a('; 

從正則表達式中刪除開始\b,或

(?x: \b | \s | ^) 
+0

感謝您的回答。你上面的兩個表達式都會產生預期的結果。我只是想知道我的表情出了什麼問題? – Pramod

+0

可否請你建議我有什麼不對這個表達式 「((\ d + | \(\ d + \))\ - \ d + \ - \ d +)」。 此exp的結果是「(201)-340-2011(201)234-345-3456 234(201)-450-4479(201)」。 每次成功比賽後,前三位數字將重複打印。 – Pramod

+0

@Pramod - 首先你要逃避'('這樣的字符:'\'(' – fugu

1

\b匹配:

+0

感謝您的迅速回復。您的評論有幫助。 – Pramod