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?