3 votes

Traiter une partie d'une expression Regex comme des caractères non spéciaux

Disons que j'ai une expression regex qui utilise certains des caractères spéciaux, mais aussi une partie de texte "normal" qui contient justement des symboles. Disons aussi que je suis trop paresseux pour commencer à échapper chaque caractère spécial "potentiel" dans la partie "texte normal".

Comment puis-je entourer la partie "normale" du texte afin que Regex ne commence pas à s'énerver lorsqu'il pense qu'il a rencontré un caractère spécial (alors que ce n'est pas le cas) ?

Supposons que je recherche le texte suivant :

.*Hello it's true that ([6*.5]^2=9) .

Je ne veux certainement pas utiliser laborieusement le caractère d'échappement à chaque fois qu'un des caractères spéciaux apparaît dans cette section mathématique (ou l'apostrophe dans "ne pas"). D'un autre côté, je veux traiter le caractère .* au début comme des caractères spéciaux.

Je peux donc joindre le Hello it's true that ([6*.5]^2=9) afin que Regex le traite comme un texte normal et non comme un texte spécial ?

J'utilise Notepad++ pour faire une recherche et un remplacement, mais j'espère que la réponse sera la même quel que soit le programme.

1voto

Thomas Dickey Points 8167

Certains outils vous permettent de déterminer si les caractères spéciaux doivent être échappés par défaut. Par exemple, vi (et ses clones) dispose d'un magic qui le contrôle. Cela peut vous permettre de réduire le nombre d'échappements nécessaires.

1voto

dev Points 303

Essayer \Q pour commencer un texte littéral, et se termine par \E .

Cela fonctionne avec de nombreuses variantes de Regex, bien que Java puisse avoir des problèmes, par exemple.

Informations obtenues auprès de : http://www.regular-expressions.info/characters.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X