El 17/1/24 a les 16:10, julio ha escrit:

El 17 de gener de 2024 8:39:26 CET, Narcis Garcia <debianli...@actiu.net> ha 
escrit:
Bones,

Tinc un fitxer de text, com podria ser per exemple una llista de números de 
telèfon (coneguts.txt):
972123456
972111133
972111134
972111135
972111136
972789012
però m'agradaria representar-hi rangs compatibles (expressions regulars) per 
abreviar:
972123456
9721111..
972789012
Com no estem acotant amb ^  ni amb $


9
7
2
.
etcètera
97
72
21
9.
.9
etc
972
97.
9.2

I això sense fent servir només dígits i el caràcter . no literal.

Sembla un problema matemàtic de combinatòria :)

O probablement no ho he entès.

Vagi bé.

Suposant que el que es cerca són números de N dígits i que els patrons de cerca son igualment de N caràcters i no fan servir repeticions (o sigui, que troben o bé un caràcter específic o bé qualsevol), existeixen 2^N patrons que coincideixen amb un número de N dígits. Amb N=9 són 512 patrons compatibles.

Si a més del . (qualsevol dígit) vols també poder indicar rangs de dígits [0-9], per a cada posició tens 10 rangs possibles, incloent el [0-9] equivalent al . i el [d-d] equivalent al dígit específic (en general, tindries el rang [k-d] (o [d-k] si k>d) per k=0..9 i d fixat). En aquest cas, són 10^N els possibles patrons que pot complir un nombre de N dígits, que ja són 100 milions per N=9.

Si acceptes patrons amb un subconjunt arbitrari de dígits per a cada posició (posem per cas, els senars), crec que tindries sum(k=1..10, 10!/((10-k)!·k!)) (tinc la combinatòria molt rovellada), que és una burrada que després encara s'haurà d'elevar a la novena potència.

De tots aquests possibles patrons, quin seria el que esperaries com a resultat correcte?

Respondre per correu electrònic a