Re: Filtrar comodins/regex de les línies
Eloi <[email protected]>
| Newsgroups | gmane.linux.debian.user.catalan |
|---|---|
| Message-ID | <[email protected]> |
El 17/1/24 a les 16:10, julio ha escrit: > > El 17 de gener de 2024 8:39:26 CET, Narcis Garcia <[email protected]> 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?