1 votes

Comment exclure de la correspondance une sous-chaîne d'une autre chaîne de caractères ?

J'ai un problème. J'aimerais faire correspondre toutes les occurrences de \t dans mon texte (et par \t je veux dire littéralement que ce n'est pas un caractère de tabulation) mais je voudrais exclure une correspondance si elle fait partie de \t chaîne. Comment faire ?

Exemple

<HTML>Blah</HTML>\t
D:\\UserData\\tui

Je voudrais correspondre \t dans la première ligne mais pas dans la seconde (car il s'agit d'une partie de \\t ).

Est-il possible de le faire en utilisant des expressions régulières ?

1voto

Adrian Pronk Points 5810

Vous devez définir plus précisément ce que vous entendez par "partie d'une chaîne". Par exemple, vous pourriez vouloir dire : Ne pas faire correspondre \t s'il est suivi d'autres caractères alphanumériques ou d'une barre oblique. Cela deviendrait donc (en Perl) :

  \\t(?![\w\\])

1voto

j_random_hacker Points 28473
/\\t\b/

\b correspond à une limite de mot (transition entre un caractère semblable à un mot et un autre qui ne l'est pas, ou vice versa).

0voto

nezroy Points 2413

Vous allez devoir définir exactement dans quels cas une \t devrait correspondre, et dans lesquels il ne devrait pas, avant qu'il soit possible de déterminer une regex pour lui. Votre définition actuelle semble être du type "je le saurai quand je le verrai", ce qui n'est pas suffisant.

0voto

wvanbergen Points 1641

Une autre approche : Faire correspondre tout sauf une barre oblique inverse, faire correspondre une barre oblique inverse et faire correspondre un caractère "t".

/\[^\\\\\](\\\\t)/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X