Question

J'ai des documents qui ont été passés par la conversion OCR de PDF en HTML. À cause de cela, ils ont fini par avoir beaucoup de ponctuation aléatoire de l'Unicode où le convertisseur a gâché (c'est-à-dire Elipses, etc ...). Ils ont également correctement un tas de personnages non anglophones, mais toujours alphabétiques, comme é et des personnages russes, etc ...

Existe-t-il un moyen de faire un regex qui correspondra à tout caractère alphabétique Unicode (à partir des alphabets de n'importe quelle langue)? Ou celui qui ne correspondra que des caractères non alphabétiques? L'un ou l'autre serait vraiment utile et génial. J'utilise Perl, si cela change quelque chose. Merci!

Était-ce utile?

La solution

Découvrez les propriétés des caractères Unicode: http://www.regular-expressions.info/unicode.html#prop. Je pense que ce que vous recherchez est probablement

\p{L}

qui correspondra à toutes les lettres ou idéographes. Vous pouvez également inclure des lettres avec des marques, vous pouvez donc faire

\p{L}\p{M}*

Dans tous les cas, tous les différents types de propriétés de caractère sont détaillés dans le premier lien.

EDIT: Vous pouvez également regarder cette réponse de débordement de pile pour discuter de la question de savoir si w correspond aux caractères Unicode. Ils suggèrent que vous pouvez également utiliser p {word} ou p {alnum}: W correspond-il à tous les caractères alphanumériques définis dans la norme Unicode?

Autres conseils

Selon la langue que vous utilisez, le moteur d'expression régulière peut ou non être conscient de l'Unicode. Si c'est le cas, il peut savoir ou non le \p{} jetons de propriété. Si c'est le cas, votre réponse est dans Caractères et propriétés Unicode Dans le tutoriel Regex de Jan Goyvaerts.

Vous pouvez utiliser \p{Latin}, s'il est soutenu, pour détecter tout ce qui est (ou n'est pas, bien sûr) à partir d'une langue qui utilise l'un des blocs latins Unicode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top