2003-02-05

MS-word ja haku-lausekkeet

Ei sitä enää tänäpäivänä luulisi ihmisen törmäävän näin tyhmästi tehtyyn pattern-matchingiin kuin mitä ms-word 2000 (9.0.4402 SR-1):ssä on.

Taustaa:

Haussa on mahdollista hakea wildcardien avulla, jotka vaikuttavat regexpeiltä MS:n omalla syntaksilla. "?" täsmää mihin tahansa yhteen merkkiin, "[a-d]" täsmää mihin tahansa merkkiin joukosta a:sta d:hen, "[!a]" täsmää ei-a:han, "*" täsmää 0 tai useampaan edelliseen merkkiin ja "@" täsmää 1 tai useampaan edelliseen merkkiin.

Näin siis teoriassa, käytäntö onkin sitten toinen juttu.

Tänään piti löytää eräästä dokumentista §-merkkeillä erotettuja sanoja, muotoa "§sana§", ja sanassa ei ole yhtään välilyöntiä. Ensimmäinen yritykseni oli tietenkin kokeilla tuttua säännöllistä lausetta "§[^ ]*§" ja muuttaa se MS-muotoon "§[! ]*§".
Ei onnistunut. Lause "§[! ]*§" täsmää myös kaikkeen tekstiin kahden §-merkityn sanan välissä, joka ei mielestäni täsmää tuohon lauseeseen. Hämmentävää kyllä, lause "§[! ]@§" toimii niinkuin ohjeissa sanotaan, eli §-merkki, 1 tai useampi ei-välilyönti ja §-merkki.
Tästä hämmentyneenä päätin kokeilla vähän lisää. " *" täsmää vain ja ainoastaan välilyönneistä koostuviin vaihtelevan mittaisiin merkkijonoihin, mutta " *a" täsmää kaikkiin merkkeihin kursorin paikkaa seuraavasta välilyönnistä seuraavaan a-kirjaimeen. " @a" täsmää puolestaan vain ja ainoastaan sellaisiin merkkijonoihin, jotka alkavat välilyönneillä ja niitä välittömästi seuraavaa yksi a-kirjain.
On se hyvä että joku on taas ajatellut käyttäjän puolesta, ja tehnyt sääntöihin poikkeuksia sekoittamalla säännöllisiä lauseita ja ns globbing-patterneja samoilla merkeillä samaan hakufunktioon ilman valinnanmahdollisuutta.

No comments:

Post a Comment