2012-01-28 11 views
19

Quando imbusto un oggetto regex con una particolare locale, come influenza il comportamento di abbinamento? Ha effetto sulla collazione o su qualsiasi altra cosa? Non riesco a trovare una spiegazione da nessuna parte.Comportamento specifico della locale nella libreria regex?

+0

Vedere anche http://stackoverflow.com/q/10540305/83805 –

+0

@DonStewart: Mi interessavano solo le specifiche C++. Il comportamento specifico locale non è necessariamente lo stesso ovunque io immagino. –

+1

Locale ha effetto sui motori regex conformi a POSIX, che è almeno il punto di partenza per la maggior parte delle librerie di espressioni regolari disponibili. –

risposta

42

Colpisce almeno quanto segue:

  • fascicolazione: la regex [a-f] intriso di un locale francese dovrebbe corrispondere al carattere é.
  • Analogamente, \w in un locale Finlandese dovrebbe corrispondere un carattere (ma [a-z] dovrebbe non, come A, A e O raccogliere dopo z in finlandese. In tedesco, tuttavia, [a-z] deve corrispondere a.)
  • In un locale compatibile con Unicode, è necessario utilizzare l'algoritmo Unicode equivalence, in modo che le forme composte di un carattere corrispondano a una forma scomposta e viceversa.
  • Con un sapore regex compatibile con POSIX (base, esteso, awk, grep ed egrep), lo POSIX character classes deve essere compatibile con le impostazioni internazionali: [=e=] deve corrispondere a é in un locale francese ma non in un locale inglese.
3

Nelle impostazioni locali spagnole, si noti che "ch" e "ll" non sono più considerati lettere singole nell'alfabeto, poiché questo è stato modificato dalle entità pertinenti. Non riuscivo a trovare la data esatta, ma in questo momento "ch" e "ll" sono due lettere:

http://en.wikipedia.org/wiki/Ll

Penso implementazioni riflettono ora questo fatto.

Problemi correlati