2009-05-22 4 views
6

Le lingue delle espressioni regolari utilizzano \ B per includere A..Z, a..z, 0..9 e _, e \ b è definito come limite di una parola.Qual è l'espressione regolare di una parola spagnola?

Come posso scrivere un'espressione regolare che corrisponda a tutte le parole spagnole valide, inclusi caratteri come: á, í, ó, é, ñ, ecc.?

Sto usando .NET.

risposta

6

Utilizzare un locale spagnolo e rendere la vostra espressione regolare locale-sensibile.

1

Il sistema di espressioni regolari dovrebbe avere qualcosa di equivalente a re.L di Python (alias re.LOCALE) per rendere un'espressione regolare dipendente dalla locale, in modo che sia un carattere di parola e cosa non cambi con le impostazioni locali, come i "limiti di parola" ecc. Stai invece chiedendo un modo per compensare un determinato sistema regex non supportato da locale, cercando comunque di forzare il problema ...?

1

Ciò dipende in gran parte dalla lingua (e dal motore regex) che si sta utilizzando.

In Perl, \w corrisponde a tutti i caratteri di parole, indipendentemente dalla lingua o dall'alfabeto e qualcosa come /\b(\w+)\b/ corrisponderebbe (probabilmente) alle parole spagnole e alle parole inglesi o alle parole russe.

Nelle lingue che utilizzano PCRE, \w (e quindi probabilmente \b) NON corrispondere ai caratteri Unicode. Probabilmente avrai bisogno di costruire il tuo set. Suggerisco qualcosa come [\wáéíóúñ] (corrisponde a tutti i caratteri di parole, più i caratteri accentati desiderati), e la libreria PCRE deve essere pre-costruita con supporto Unicode prima che funzioni anche.

Se stai usando qualcos'altro, buona fortuna. Alcuni motori regex non supportano nemmeno Unicode.

Problemi correlati