Page 1 sur 1
[R] Regex téléphone
Posté : jeu. 19 mars 2020 11:06
par scorp84
Bonjour à tous,
Tout d'abord bon courage à tous pour le confinement.
Voici mon besoin du jour : Je récupère des commentaires dans lesquels, j'ai besoin d'extraire des numéros de téléphone.
Exemple de commentaires :
PDS 07h 06 12 45 78 48
Agent sur place 06.12.45.78.48
APP 07h20 06/12/45/78/48
Appeler l'agent au 0612457848
0612457848 pour agent sur place
J'ai utilisé le pattern suivant pour isoler les chiffres :
$pattern = "[0-9]"
$reg_exp_res = StringRegExp($comm_en_cours, $pattern, 3)
$reg_exp_res=_ArrayToString($reg_exp_res, "")
ConsoleWrite($reg_exp_res & @CRLF)
qui fonctionne pour les commentaires 2, 4 et 5 car il n'y a pas d'autres chiffres mais pas pour le 1 et 3 ou il y a une heure.
Le numéro peut-être n'importe où.
Merci d'avance pour votre aide.
Amicalement.
BM
Re: [..] Regex téléphone
Posté : jeu. 19 mars 2020 16:03
par walkson
Bonjour,
J'ai bricolé ce regex il y a surement plus simple !
On obtient un array dans un array qui lui contient le N° de téléphone. C'est pas génial mais ça marche
.
J'ai compliqué la recherche en ajoutant des indicatifs, plusieurs N° et plusieurs lignes à tout hasard...
Local $array[7] = ["1-PDS 07h 06 12 45 78 48","2-Agent sur place 06.12.45.78.48 ou 07.12.45.78.48" & @CRLF & "ou 08.12.45.78.48","3-APP 07h20 06/12/45/78/48","4-Appeler l'agent au 0612457848","5-07-12-45-78-48 pour agent sur place", _
"6-Agent (+33) 01 85 73 14 00 à 07:15","7-Agent (+596) 06 78 56 56 00 à 07h15 le 12/04/2020"]For $i = 0 To UBound($array) - 1 $reg_exp_res = StringRegExp($array[$i], "(?m)(0|[+0-9])[1-9]([-. /]?[0-9]{2}){4}+", 4) For $y = 0 To UBound($reg_exp_res) - 1 Local $aMatch = $reg_exp_res[$y] MsgBox(0,$y & " /"& UBound($reg_exp_res) - 1 &" pour "& $i , $array[$i] & @CRLF & @CRLF & "N°: " & $aMatch[0]) NextNext
Jchd ou Michel auront surement de meilleurs idées
Re: [..] Regex téléphone
Posté : jeu. 19 mars 2020 16:54
par scorp84
Bonjour Walkson,
Une fois de plus un grand merci pour votre réponse rapide et efficace (comme d'hab
Amicalement.
BM
Re: [R] Regex téléphone
Posté : jeu. 19 mars 2020 17:47
par walkson
Doucement avec les compliments ! je ne suis pas sûr de les mériter
Testez avec
"1-PDS 07h15 06 12 45 78 48"
cela vous retourne
15 06 12 45 78
ce qui n'est pas la réponse attendue !
Y'a encore du travail sur la planche
Re: [R] Regex téléphone
Posté : ven. 20 mars 2020 08:54
par mikell
My 2 cents - out of containment
$txt1 = "PDS 07h 06 12 45 78 41" & @crlf & _
"Agent sur place 06.12.45.78.42" & @crlf & _
"APP 07h20 06/12/45/78/43" & @crlf & _
"Appeler l'agent au 0612457844" & @crlf & _
"0612457845 pour agent sur place" & @crlf & _
"1-PDS 07h06 06 12 45 78 46" & @crlf & _
"1-PDS 07h 06 06 12 45 78 47"$txt2 = "1-PDS 07h 06 12 45 78 41" & @crlf & _
"2-Agent sur place 06.12.45.78.48 ou 07.12.45.78.42" & @crlf & _
"ou 08.12.45.78.43" & @crlf & _
"3-APP 07h20 06/12/45/78/44" & @crlf & _
"4-Appeler l'agent au 0612457845" & @crlf & _
"5-07-12-45-78-46 pour agent sur place" & @crlf & _
"6-Agent (+33) 01 85 73 14 00 à 07:15" & @crlf & _
"7-Agent (+596) 06 78 56 56 00 à 07h15 le 12/04/2020"$res = StringRegExpReplace($txt2, _
'(?m)^.*(?<!h)(\d{2})([-. /]?)((?1))\2((?1))\2((?1))\2((?1)).*', _
"$1 $3 $4 $5 $6")Msgbox(0,"", $res)
Re: [R] Regex téléphone
Posté : ven. 20 mars 2020 14:39
par walkson
Bonjour,
J'aime bien ce code car il formate les N° et il est simple mais sur le $txt2 à
"2-Agent sur place 06.12.45.78.48 ou 07.12.45.78.42" & @crlf & _
il ne prend que le deuxième numéro.
Sinon j'ai trouvé ce regex que j'ai bidouillé et qui accepte à peu près toutes les formes de N° mais il ne les formate pas
Local $array[9] = ["1-PDS 07h15 06 12 45 78 48","2-Agent sur place 06.12.45.78.48 ou 07.12.45.78.48" & @CRLF & "ou 08.12.45.78.48","3-APP 07h20 06/12/45/78/48","4-Appeler l'agent au 0612457848","5-07-12-45-78-48 pour agent sur place", _
"6-Agent +33 1 85 73 14 00 à 07:15","7-Agent (+33) 06 78 56 56 00 à 07h15 le 12/04/2020","8-Agent 0033 1 78 56 56 00 à 07h15 le 12/04/2020","9 +33 678 565 600" ]For $i = 0 To UBound($array) - 1 $reg_exp_res = StringRegExp($array[$i], "(?m)(?:(?:\+|00)33|0)\s*[1-9](?:[\s\W]*\d{2,3}){3,4}", 4) For $y = 0 To UBound($reg_exp_res) - 1 Local $aMatch = $reg_exp_res[$y] MsgBox(0,$y & " /"& UBound($reg_exp_res) - 1 &" pour "& $i , $array[$i] & @CRLF & @CRLF & "N°: " & $aMatch[0]) NextNext