與您提供的示例數據,這個正則表達式應該工作
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但你也可以使用捕獲的比賽數據和自己提取它。
您可能必須根據您將原始數據饋送到此功能的精確程度進行定製。我不知道你是否傳遞了一個完整的文本字符串與嵌入的新行,或者如果你傳遞一個行向量。
你對圖案'ID - 515'有什麼意義...只需查找傳真,然後匹配它後面的圖案。你有嘗試過什麼嗎? – hwnd
是的,我做到了。我嘗試了一些正則表達式來做同樣的事情。 ID 515只是結果格式。它可能只是傳真號碼 – user3619015