Buscar..


Cartas a juego en diferentes alfabetos

Los siguientes ejemplos se dan en Ruby, pero los mismos emparejadores deberían estar disponibles en cualquier idioma moderno.

Digamos que tenemos la cadena "AℵNaïve" , producida por Messy Artificial Intelligence. Se compone de letras, pero genérica \w matcher no coincidirá tanto:

▶ "AℵNaïve"[/\w+/]
#⇒ "A"

La forma correcta de hacer coincidir la letra Unicode con marcas combinadas es usar \X para especificar un grupo de grafemas. Sin embargo, hay una advertencia para Ruby. Onigmo, el motor de expresiones regulares para Ruby, todavía usa la antigua definición de un grupo de grafemas . Aún no se ha actualizado a Extended Grapheme Cluster como se define en el Anexo 29 de Unicode Standard .

Por lo tanto, para Ruby podríamos tener una solución: \p{L} hará casi bien, salvo porque falla en el acento diacrítico combinado en i :

▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"

Al agregar los "símbolos de marca" a la expresión, finalmente podemos hacer coincidir todo:

▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow