2012-01-28 9 views
19

Cuando impregno un objeto regex con una configuración regional particular, ¿cómo afecta el comportamiento de coincidencia? ¿Afecta la intercalación o cualquier otra cosa? Parece que no puedo encontrar una explicación en ningún lado.comportamiento específico de la configuración regional en la biblioteca de expresiones regulares?

+0

Vea también http://stackoverflow.com/q/10540305/83805 –

+0

@DonStewart: Solo estaba interesado en C++ específicos. El comportamiento específico de la localidad no es necesariamente el mismo en todas partes que imagino. –

+1

La configuración regional afecta a los motores regex que cumplen con POSIX, que es al menos el punto de partida para la mayoría de las bibliotecas de expresiones regulares. –

Respuesta

42

Afecta al menos lo siguiente:

  • Colación: la expresión regular [a-f] imbuido de un entorno local francés debe coincidir con la dirección carácter.
  • Del mismo modo, \w en una localidad finlandesa debe coincidir con el carácter ä (pero [a-z] debe no, como A, A y O cotejar después de z en finlandés. En alemán, sin embargo, [a-z] concuerden con un.)
  • En una configuración regional compatible con Unicode, se debe usar el algoritmo Unicode equivalence, de modo que las formas compuestas de un carácter coincidan con una forma descompuesta y viceversa.
  • Con un sabor de expresiones regulares compatible con POSIX (básico, extendido, awk, grep y egrep), el POSIX character classes debe tener en cuenta la configuración regional: [=e=] debe coincidir con é en una configuración regional francesa pero no en una configuración regional en inglés.
3

En la configuración regional, tenga en cuenta que "ch" y "ll" ya no se consideran letras solas en el alfabeto, ya que esto fue modificado por las entidades pertinentes. No he podido encontrar la fecha exacta, pero en este momento "ch" y "ll" son dos letras:

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

Creo implementaciones ahora reflejan ese hecho.

Cuestiones relacionadas