2015-03-02 36 views
0

我開始學習如何使用正則表達式來解析來自文本的信息。我已經能夠在R中編寫一個表達式來根據我在文本文件中看到的不同變體從字符串中提取電話號碼。如何從同一個字符串返回多個電話號碼?

reg_expr <- "\\(?1?\\s?-?\\(?\\d{3})?\\s?-?\\d{3}\\s?-?\\d{4})?" 
data[, Phone := str_extract(Text, reg_expr)] 

但我不知道如何修改此從相同的文本字符串返回2個電話號碼。例如:

「嗨,請致電123-456-7890,或加快服務1-800-987-6543。」

因此,如果我的數據表中的第一列是文本字符串,第二列(電話)將顯示123-456-7890。但我錯過了提供的第二個電話號碼。

有沒有辦法返回兩個數字?理想情況下,它會將它們放在電話欄中,例如123-456-7890,1-800-987-6543。

我唯一的想法是把大括號放在正則表達式的末尾,但它似乎不起作用。

謝謝!

+3

str_extract_all()? – cory 2015-03-02 15:23:04

回答

0

你應該在stringr包中使用str_extract_all函數。

str_extract_all("Hi, please call 123-456-7890, or for faster service 1-800-987-6543.", reg_expr) 
[1] " 123-456-7890" "1-800-987-6543" 
+0

我很專注於問題的正則表達式部分,我完全錯過了這個功能!列表輸出使它有點難以使用,但是可行! – AlexP 2015-03-02 19:58:23