R信息摘自文本传真:(编号)

时间:2014-05-19 18:51:52

标签: regex r

在R中我想执行文本分析并在数据中查找传真号码。除了数字模式匹配(它在这里不起作用,因为存在类似样式的电话号码),我想使用一些技术从文本中提取传真号码。 Patters是:

Fax (tab) : 9890000
Fax:89182828
Fax    : 65535933
FAX (+85) 0449 0279
Fax: (85) 6336 7926
Fax    :     65535933

输入 ID:515 我的机器出现此问题。请用解决方案给我回电话。   -

问候,

Shiny,
 Tel: 65535933 
 Fax: 65938933

结果应该只是传真号码而不是电话号码。传真号码可以包含以上所有模式  - ID   - 515
传真 - 65938933。

1 个答案:

答案 0 :(得分:0)

使用您提供的示例数据,此正则表达式应该可以正常工作

test<-c("Fax \t : 9890000",
    "Fax:89182828",
    "Fax    : 65535933",
    "FAX (+85) 0449 0279",
    "Fax: (85) 6336 7926",
    "Phone: (85) 6336 7926",
    "Fax    :     65535933")

matches<-regexpr("fax\\s*:?\\s*(.*)",test, ignore.case=T, perl=T)
capmathces<-regcapturedmatches(test,matches)
faxnums<-unlist(lapply(capmathces, function(x) if (length(x)>0) x[1] else NA))
cbind(faxnums, test)

# Results:
#      faxnums           test                   
# [1,] "9890000"         "Fax \t : 9890000"      
# [2,] "89182828"        "Fax:89182828"         
# [3,] "65535933"        "Fax    : 65535933"    
# [4,] "(+85) 0449 0279" "FAX (+85) 0449 0279"  
# [5,] "(85) 6336 7926"  "Fax: (85) 6336 7926"  
# [6,] NA                "Phone: (85) 6336 7926"
# [7,] "65535933"        "Fax    :     65535933"

我在这里使用帮助函数regcapturedmatches,但您也可以使用捕获的匹配数据并自行提取。

您可能需要根据将原始数据输入此功能的具体情况进行自定义。我不确定您是否传递了带有嵌入新行的完整文本字符串,或者是否传递了行向量。