J'ai essayé de coloriser dans rebol une url comme celui-ciComment analyser/coloriser les paires mot-clé/valeur dans l'URL?
content: "http://domain.com/test.php?keyword=hdhdf&hdhd=sdcfsv&sbcfsv=sdncfd&sncfsdv=dncsv&cnsv=dshdkd&scsv=12334&DXV=D&SWJDJJDFDJQKKKKKKKKKKKK&DFG=V&DJJF=DJVNVV&DJFFFFFFFFFF=33333"
rule-keyword-0: [to "?" thru "?" mark: (insert mark {<font color="red">}) 19 skip to "=" mark: (insert mark "</font>") thru "="]
rule-keyword-1: [to "&" thru "&" mark: (insert mark {<font color="red">}) 19 skip to "=" mark: (insert mark "</font>") thru "="]
rule-value-0: [to "</font>=" thru "</font>=" mark: (insert mark {<font color="blue">}) 20 skip to "&" mark: (insert mark "</font>") thru "&"]
rule-value-1: [to "</font>=" thru "</font>=" mark: (insert mark {<font color="blue">}) 20 skip to end mark: (insert mark "</font>")]
rule-keyword: [any [rule-keyword-0 | rule-keyword-1] to end]
rule-value: [any [rule-value-0 | rule-value-1] to end]
parse content rule-keyword
parse content rule-value
Mais la sortie est pas juste (voir par exemple deux font color = "blue" à la fin):
http://domain.com/test.php?<font color="red">keyword</font>=<font color="blue">hdhdf</font>&<font color="red">hdhd</font>=<font color="blue">sdcfsv</font>&<font color="red">sbcfsv</font>=<font color="blue">sdncfd</font>&<font color="red">sncfsdv</font>=<font color="blue">dncsv</font>&<font color="red">cnsv</font>=<font color="blue">dshdkd</font>&<font color="red">scsv</font>=<font color="blue">12334</font>&<font color="red">DXV</font>=<font color="blue">D&<font color="red">SWJDJJDFDJQKKKKKKKKKKKK</font>&DFG</font>=<font color="blue">V&<font color="red">DJJF</font>=DJVNVV</font>&<font color="red">DJFFFFFFFFFF</font>=<font color="blue"><font color="blue">33333</font>
Qu'est-ce que le bon Règle
J'ai regardé le résultat: ça donne ce que je voulais merci. Maintenant, je vais me gratter la tête pour comprendre votre code. Parfois, parse semble difficile pour les exigences simples :) Peut-être dans ce genre de cas, regex est plus simple? –
Ce que j'essaie toujours de faire est une règle de composition pour les règles d'analyse (commencer avec 2 règles indépendantes et les agréger) mais cela ne semble pas possible ou difficile avec parse. –
Tout ce qu'il fait est de trouver les paires autour du =, marque l'endroit où chaque chaîne doit être insérée, puis insère le 2ème en premier (si j'ai inséré le premier en premier, alors la position du second sera modifiée), et puis la première seconde. Je saute ensuite les choses que j'ai insérées. Après la police bleue, je vérifie ensuite si je suis à la fin. Vous pouvez le faire avec plusieurs règles, mais je l'ai fait en un seul. –