Etter mer enn et halvt år med utvikling, ble versjon 10.45 av PERL-kompatible regulære uttrykk utgitt. PCRE2, skrevet i C og distribuert under BSD-lisensen. Dette er en relativt stor utgivelse som inkluderer nye funksjoner, noen feilrettinger og flere endringer som har minimal innvirkning på bakoverkompatibiliteten.
Versjon 10.45 er den første utgivelsen forberedt av de nye prosjektlederne, som takker Philip Hazel, skaperen og vedlikeholderen av prosjektene PCRE og PCRE2.
Endringslogg:
- Prosjektet for JIT-kompilering sljit blir nå brukt som en Git-undermodul.
- Unicode-dataene er oppdatert til versjon 16.
- Saksomatchingen for Unicode-egenskapene Ll, Lt og Lu har blitt endret for å samsvare med Perl. Tidligere tok mønsteret /p{Ll}/i hensyn kun til tegn med små bokstaver (selv om det ble spesifisert case-insensitiv matching). Denne endringen påvirker også case-insensitiv matching av POSIX-klasser, som f.eks. [:lower:].
- En ny funksjon scan_substring har blitt lagt til. Dette er en ny type uttrykk som matcher innholdet i en fanget blokk med et delmønster.
For eksempel finner uttrykket b(w++)(*scan_substring:(1).+rh) et ord som inneholder den sjeldne sekvensen av bokstaver «rh» i engelsk, som ikke ligger i starten. - Støtte for tegnklasser kompatible med UTS#18 (Unicode Regular Expressions) har blitt lagt til via den nye PCRE2_ALT_EXTENDED_CLASS-opsjonen. For dette må du bruke [ som metategn i tegnklassene og operatorene &&, - og ~~ som gjør det enkelt å utføre subtraksjoner og snitt av tegnklasser.
For eksempel, for å matche thailandske eller greske bokstaver (men ikke bokstaver eller andre tegn i disse skriftsystemene) kan du bruke uttrykket [p{L}&&[p{Thai}||p{Greek}]]. - Støtte for utvidede tegnklasser i Perl-stil er lagt til, ved å bruke syntaksen (?[…]). Dette gjør det også mulig å uttrykke subtraksjoner og snitt av tegnklasser, men med en syntaks som er forskjellig fra UTS#18 (Unicode Regular Expressions).
For eksempel, for å matche thailandske eller greske bokstaver (men ikke bokstaver eller andre tegn i disse skriftsystemene) kan du bruke uttrykket (?[p{L} & (p{Thai} + p{Greek})]). - Betydelige forbedringer i mekanismen for klassifisering av tegn. Kompilerte tegnklasser er nå mer kompakte og gir raskere matching for store eller komplekse tegnsett ved å bruke binærsøk i settet.
- Det er lagt til en ny funksjon pcre2_set_optimize() i API-et for å styre optimaliseringene.
- Mange forbedringer i funksjonen pcre2_substitute().
- Andre forbedringer og feilrettinger.
Kilde: linux.org.ru
