Я пытаюсь извлечь из случайного текста телефонные номера в 28 различных форматах в R. Я читал предыдущие посты здесь о регулярном выражении R, такие как замена \
на \\
и запуск оператора регулярного выражения с perl=TRUE
, поэтому я решил большинство своих проблем.Мне нужна помощь с некоторой отладкой.
Я использую следующее регулярное выражение в R:
medium_regex2 = "(?:\\+?(\\d{1})?-?\\(?(\\d{3})\\)?[\\s-\\.]?)?(\\d{3})[\\s-\\.]?(\\d{4})[\\s-\\.]?"
и запускаю следующий код:
medium_phone_extract2 <- function(string){
unlist(regmatches(string,gregexpr(medium_regex2,string, perl=TRUE)))
}
medium_phone_extract2(phonenumbers)
Выражение пятна 26из 28 номеров правильно.2 пропущенных числовых формата: «+ 90-555-4443322» «+1.517.3002010»
Как бы вы улучшили регулярное выражение, чтобы эти 2 формата также были правильно извлечены?
edit: полные 28 форматов, которые я пытаюсь извлечь:
phonenumbers <- c("05554443322",
"0555 444 3322",
"0555 444 33 22",
"5554443322",
"555 444 3322",
"555 444 33 22",
"905554443322",
"+905554443322",
"+90-555-4443322",
"+1-517-3002010",
"+1-(800)-3002010",
"+1-517-3002010",
"+1.517.3002010",
"000-000-0000",
"000 000 0000",
"000.000.0000",
"(000)000-0000",
"(000)000 0000",
"(000)000.0000",
"(000) 000-0000",
"(000) 000 0000",
"(000) 000.0000",
"000-0000",
"000 0000",
"000.0000",
"0000000",
"0000000000",
"(000)0000000")
howmany_numbers <- length(phonenumbers)
#28
И 26, которые я могу извлечь с помощью регулярного выражения:
[1] "05554443322" "0555 444 3322" "5554443322" "555 444 3322" "90555444332"
[6] "+90555444332" "0-555-4443322" "+1-517-3002010" "+1-(800)-3002010" "+1-517-3002010"
[11] "517.3002010" "000-000-0000" "000 000 0000" "000.000.0000" "(000)000-0000"
[16] "(000)000 0000" "(000)000.0000" "(000) 000-0000" "(000) 000 0000" "(000) 000.0000"
[21] "000-0000" "000 0000" "000.0000" "0000000" "0000000000"
[26] "(000)0000000"