2009-05-22 10 views
6

Los lenguajes de expresiones regulares usan \ B para incluir A..Z, a..z, 0..9 y _, y \ b se define como un límite de palabra.¿Cuál es la expresión regular de una palabra en español?

¿Cómo puedo escribir una expresión regular que coincida con todas las palabras válidas en español, incluyendo caracteres como: á, í, ó, é, ñ, etc.?

Estoy usando .NET.

Respuesta

6

Usa una configuración regional en español y haz que tu regex sea sensible a la configuración regional.

1

Su sistema de expresión regular debe tener algo equivalente a la de Python re.L (también conocido como re.LOCALE) para hacer una expresión regular dependiente de la localización, de manera que lo que es una palabra-personaje y lo que no cambia con la configuración regional, al igual que "límites de las palabras", etc. ¿En su lugar está pidiendo una forma de compensar algún sistema de expresiones regulares dado no apoyando la configuración regional, tratando de forzar el problema de todos modos ...?

1

Esto depende en gran medida del idioma (y del motor de expresiones regulares) que esté utilizando.

En Perl, \w coincide con todos los caracteres de palabras, independientemente del idioma o el alfabeto, y algo así como /\b(\w+)\b/ podría (probablemente) coincidir con palabras españolas, así como palabras en inglés o en ruso.

En los idiomas que utilizan PCRE, \w (y por lo tanto probablemente \b) NO coinciden con los caracteres Unicode. Probablemente necesites construir tu propio conjunto. Sugiero algo como [\wáéíóúñ] (coincide con todos los caracteres de las palabras, más los caracteres acentuados que desee), y la biblioteca PCRE debe preconstruirse con soporte Unicode antes de que esto funcione.

Si está usando algo más, buena suerte. Algunos motores de expresiones regulares ni siquiera admiten Unicode.

Cuestiones relacionadas