Comment supprimer tous les caractères autres que des mots sauf ä, ö et ü d'un texte à l'aide de RegExp


AshmaN3D

J'ai un fichier et je souhaite en supprimer tous les caractères autres que des mots, à l'exception de ä, öet ü, qui sont des voyelles mutées en allemand. Y a-t-il un moyen de faire word.gsub!(/\W/, '')et d'y mettre des exceptions?

Exemple:

text = "übung bzw. äffchen"
text.gsub!(/\W/, '').

Maintenant, il reviendrait "bungbzwffchen". Il supprime les caractères non mot, mais supprime également les voyelles mutées üet ä, que je veux conserver.

Kimmo Lehto

Vous pourrez peut-être définir une liste d'exclusions en utilisant une sorte de chose de rétroaction négative, mais le plus simple, je pense, serait simplement d'utiliser à la \wplace \Wet d'annuler l'ensemble du groupe:

word.gsub!(/[^\wÄäÖöÜü]/, '') 

Vous pouvez également utiliser word.gsub(/[^\p{Letter}]/, ''), qui devrait supprimer tous les caractères qui ne sont pas répertoriés comme "Lettre" en Unicode.

Vous mentionnez les voyelles allemandes dans votre question, je pense qu'il vaut la peine de noter ici que l'alphabet allemand comprend également le long-s: ẞ / ß

Mettre à jour:

Pour répondre à votre question initiale, pour définir une liste d'exclusions, vous utilisez le "look-behind négatif" (?<!pat):

word.gsub(/\W(?<![ÄäÖöÅåẞß])/, '')

Articles connexes