2010-03-03 16 views
5

inglese, ovviamente, è un gioco da ragazzi per regex perché è quello che è stato originariamente sviluppato in/per:Le espressioni regolari possono funzionare con lingue diverse?

Può espressioni regolari capire questo set di caratteri?

Il francese entra in alcuni caratteri accentati che non sono sicuro su come combaciare - cioè sono sia e sia considerati caratteri di parole da regex?

Les expressions régulières peuvent comprendre ce jeu de caractères?

Giapponese non contiene quello che conosco come caratteri di parole regex da confrontare con.

正規 表現 は, こ の 文字 を 理解 で き, 設定?

+0

Penso che questo possa dipendere anche dalla piattaforma su cui è in esecuzione il motore regex, ne avevi uno in mente? – Lazarus

+0

"Regex", o "espressione regolare", è un concetto definito per qualsiasi raccolta di simboli che potresti voler chiamare un alfabeto. In pratica, ci sono molti motori di espressioni regolari (tutti i quali ho visto aggiungere anche altre capacità), alcuni dei quali presumibilmente gestiscono Unicode di alcuni gusti e alcuni dei quali probabilmente no. In breve, si tratta di una domanda dipendente dalla piattaforma e per ottenere una risposta utile è necessario comunicarci il motore regex di cui si sta parlando. –

risposta

6

Risposta breve: .

In particolare, dipende dal motore di espressioni regolari che supporta le corrispondenze di unicode (come descritto here).

Tali partite possono complicare le espressioni regolari enormemente, così mi può consigliare la lettura di this unicode regex tutorial (Si noti inoltre che le implementazioni unicode stessi possono essere un bel pasticcio per cui si potrebbe anche trarre beneficio dalla lettura di Joel Spolsky del article sul funzionamento interno di carattere imposta).

+2

Si noti che Unicode non è il caos. Sono tutti i tentativi precedenti che rendono l'intera faccenda complicata. –

+1

Per definizione in quell'articolo, Unicode non può essere un disastro: le implementazioni possono essere. – Tom

1

Per quanto ne so, non c'è alcun modello specifico è possibile utilizzare ad esempio [a-zA-Z] per abbinare "è", ma puoi sempre abbinarli separatamente, cioè [a-zA-Zè 正]

Ovviamente questo può rendere immenso il tuo regexp, ma puoi sempre controllarlo aggiungendo le tue stringhe in variabili e passando solo le variabili nelle espressioni.

0

non si tratta dell'espressione regolare ma del framework che lo esegue. java e .net penso che siano molto bravi nella gestione di unicode. quindi "è ed e entrambi i caratteri della parola considerati da regex" è vero.

0

Dipende dall'implementazione e dal set di caratteri. In generale, la risposta è "Sì", ma potrebbe richiedere una configurazione aggiuntiva da parte dell'utente.

In Perl, ad esempio, il significato di cose come \ w viene modificato dalla locale scelta (usa locale).

1

In generale, l'espressione regolare è più per il testo leggibile da una macchina che per il testo leggibile. È per molti versi una risposta più generale all'intero XML con la regex; regex è per sua stessa natura incapace di analizzare correttamente il linguaggio umano, perché il linguaggio è più complesso di quello che stai usando per analizzarlo.

Se si desidera abbattere il linguaggio umano (incluso l'inglese), si vorrebbe utilizzare uno strumento di analisi del linguaggio o persino un'intelligenza artificiale, non semplici espressioni regolari.

0

Questo SO thread potrebbe aiutare. Include lo Unicode character classes che è possibile utilizzare in un'espressione regolare (ad esempio, [Ll] è tutte lettere minuscole, indipendentemente dalla lingua).

+0

Utilizzare in un'espressione regolare in quale motore? Perl? Incremento? Giava? –

+0

6.2L V8. Che altro tipo c'è? – Tom

0

/[\p{Latin}]/ dovrebbe ad esempio includere l'alfabeto latino. È possibile ottenere la spiegazione completa e il riferimento here.

+0

Questo è un sito dall'aspetto interessante, ma si concentra su Perl e motori regex simili. Non è universale. –

+0

hmm si, non sono sicuro di quale motore utilizza il richiedente, ma forse è utile? Il motore Perl RegEx è ampiamente utilizzato – casraf

Problemi correlati