Вы можете использовать это регулярное выражение для сопоставления и извлечения всех телефонных номеров, которые есть в вашей строке.
(?: *[-+().]? *\d){6,14}
Идея, лежащая в основе этого регулярного выражения, состоит в том, чтобы по желанию разрешить один символ из этого набора [-+().]
(так как эти символы могут появляться в вашем телефонном номере) перед одной цифрой в вашем телефонном номере. Если ваш телефонный номер может содержать больше символов, таких как {
или }
или [
или ]
, вы можете добавить их в этот набор символов. И этот необязательный набор символов может быть окружен необязательными пробелами, поэтому у нас есть пробел до и после этого набора символов, и в конце у нас есть \d
для сопоставления его с числом, и весь этот образец количественно {6,14}
по крайней мере появляются 6 или макс. появляются 14 раз (вы можете настроить эти номера в соответствии с вашими потребностями), так как минимальное число в номере телефона согласно вашим образцам данных равно 6 (хотя на самом деле я думаю, что это 7 или 8 в Сингапуре, но это вверх Вам)
Regex Demo
Демоверсия кода R
library(stringr)
str_match_all("sDlkjazsdklzdjsdasz+49 123 999dszDLJhfadslkjhds0001 123.456sL:hdLKJDHS+31 (0) 8123zsKJHSDlkhzs&^#%Q(999)9999999adlfkhjsflj(999)999-9999sDLKO*$^9999999999adf;jhklslFjafhd9999999999999zdlfjx,hafdsifgsiaUDSahj", "(?: *[-+().]? *\\d){6,14}")
Печатает все необходимые номера,
[[1]]
[,1]
[1,] "+49 123 999"
[2,] "0001 123.456"
[3,] "+31 (0) 8123"
[4,] "(999)9999999"
[5,] "(999)999-9999"
[6,] "9999999999"
[7,] "9999999999999"