Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

regex (backreference)

Résolu !
Accéder à la solution

Bonjour à tous,

 

petite question concernant les expressions régulières :

 

(3)[^3]

 

soit le caractère "3" suivit par un caractère autre que "3" ... par exemple 3k

 

 

j'aimerais remplacer le 2eme terme, soit [^3], par une "backreference" au 1er groupe capturé ... soit une référence sur (3)"

 

la référence sur (3) est ici \1

 

Le problème est que j'ai besoin de l'inverse de \1 ... soit, n'importe quoi, sauf  \1

 

par analogie à [^3] , j'écrirais ^\1 ... mais ^\1 ne fonctionne pas !!

 

 

la question peut se résumer à ceci : Comment prendre l'inverse d'une référence ?

 

 

merci pour votre aide.

 

edit:

J'ai pensé et essayé d'utiliser un "Lookahead_négatif", soit (?!\1),

mais dans ce cas le 2eme caractère ne fait pas partie du "match"...

et j'aimerais qu'il en fasse partie comme dans l'expression (3)[^3]de départ.

 

 

 

0 Compliments
Message 1 sur 9
4 439 Visites

 

oops   Smiley surpris  , pas de réponse ... j'essaye ici

0 Compliments
Message 2 sur 9
4 406 Visites
Solution
Accepté par l'auteur du sujet ouadji

Bien peur que très peu d'utilisateurs savent correctement jouer avec les expressions régulières 🙂 Tu as bien fait de te tourner vers l'international 😛

 

Cdt

Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

0 Compliments
Message 3 sur 9
4 399 Visites

Bonjour Eric,

 

et bien moi j'en au eu "marre" de n'y rien comprendre.

 

Je regardais "ça" comme si je voyais un vieux dialecte Malgache ... Smiley surpris

 

j'ai commencé par acheter le livre Les expressions régulières

 

Je l'ai dévoré en une soirée ... une main sur le bouquin, une main sur le PC (LV)

 

et maintenant j'épluche la doc "mère" du PCRE

 

une semaine plus tard, j'arrive à construire des expressions comme ceci :  (.{3})(.|\R)+?(?=\1|$) (et qui fonctionne Smiley clignant de l'œil )

 

(avec Capture d'un groupe, un LookAhead, un if-then-else, un quantificateur possessif)

 

et franchement, c'est passionnant ! (et très amusant)

 

 

0 Compliments
Message 4 sur 9
4 394 Visites

Salut Ouadji,

 

Moi je n'ai pas répondu, parce que déjà je ne suis pas un féru des expressions régulières, et surtout parce que je n'ai rien compris à ta question!!!

 

Comme il te l'a été demandé sur le forum américain, pose des exemples de ce que tu attends pour illustrer tes propos.

Ton dernier post qui explique ce que tu as testé comme entrée, le résultat que tu as obtenu et le résultat que tu penses devoir obtenir permettent de comprendre le besoin.

 

Lorsque tu parles de référence, ou d'autres termes particuliers, je pense que personne ne comprend à part les quelques dingues qui ont acheté le bouquin comme toi ^^

 

Tu m'impressionnes par ta capacité à aller fouiller au fond des choses, mais même si tu n'as pas de besoin particulier, il y'a toujours une idée derrière tes questions, alors n'hésites pas à les vulgariser plutôt que de rester dans la théorie pure d'un concept, je pense que tu obtiendras plus facilement de l'aide.

 

A+

 

Edit : D'ailleurs, après avoir lu ton dernier post avec l'exemple, et après avoir relu ton premier post, et bah j'ai enfin compris ce que tu voulais faire et ce que signifiaient tous les termes stipulés ^^

 

Olivier L. | Certified LabVIEW Developer


Message 5 sur 9
4 384 Visites

le commencement se trouve ici (voir mes 2 derniers messages)

 

notre ami Jack a un petit soucis à résoudre, et J'ai trouvé une solution à son problème.

Ma solution utilise la fonction "match regular expression" (celle que Jack voulait utiliser)

et non d'autres fonctions comme proposé par GregSands (voir le thread dont le lien est ci-dessus)

 

Dans cette recherche (pour trouver une solution) cela m'aurait bien aidé de pouvoir obtenir l'opposé d'une réference.

N'y arrivant pas, je m'en suis passé.

 

référence à quoi ? ... a un groupe capturé

voici une expression régulière : toto

Cette regex recherche "toto" ... et il y aura match par exemple dans "abctoto1zy"

mais si j'écris (toto) au lieu de toto ... je "capture" le contenu, et je peux ensuite y faire référence.

Si je n'ai qu'une seule "capture", je ferai référence à (toto) avec \1.

(toto)[0-9]\1 ... se lock par exemple sur toto5toto .... car \1 = le contenu de la capture n°1 ... ici "toto".

 

"Comme il te l'a été demandé sur le forum américain ..."

difficile pour moi de partir dans de grandes explications en anglais ... je n'ai pas la connaissance suffisante.

De plus ...

Un exemple "précis" déclenche en général des propositions de solutions,

cela est très gentil mais avorte quasi d'office un échange théorique sur le "fond".

Une fois qu'une "solution" (qui fonctionne) a été proposée ... le thread à tendance à se "fermer".

 

Et à chaque fois, je dois expliquer (comme je peux) que le résultat n'est pas l'essentiel ...

qu'un "contournement" ne répond pas à ma recherche ... et que ma question porte d'avantage sur "le fond".

 

Tout ceci étant dit, j'ai contacté l'auteur de PCRE (Philip Hazel) pour lui proposé mon idée .

Il m'a répondu, il comprend ce que je recherche ...

mais aucune fonctionnalité de ce type n'existe dans PERL !

Et comme par définition PCRE suit au plus près PERL ... il n'est pas "chaud" du tout pour inclure une telle fonctionnalité.

 

et pour terminer ... le terme "dingues" me plait énormément

c'est un compliment !  Smiley clignant de l'œil

 

 

Message 6 sur 9
4 375 Visites

ouadji wrote:

"Comme il te l'a été demandé sur le forum américain ..."

difficile pour moi de partir dans de grandes explications en anglais ... je n'ai pas la connaissance suffisante.


Votre anglais est meilleur que vous emboîtent le pense, et beaucoup mieux que ma tentative pitoyable de français avec Google Translate.

 

"Code is the universal language" 🙂

Message 7 sur 9
4 367 Visites

thank you Jack, it's very nice of you.

Message 8 sur 9
4 364 Visites

ouadji wrote:

et pour terminer ... le terme "dingues" me plait énormément

c'est un compliment !  Smiley clignant de l'œil


Je te le confirme, c'était un compliment Smiley très heureux

 

Olivier L. | Certified LabVIEW Developer


Message 9 sur 9
4 350 Visites