在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。
答案 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,但您也可以使用捕获的匹配数据并自行提取。
您可能需要根据将原始数据输入此功能的具体情况进行自定义。我不确定您是否传递了带有嵌入新行的完整文本字符串,或者是否传递了行向量。