Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Regex modification du dernier caractère précis d'une ligne

5 réponses
Avatar
xfitgit
Bonjour à tous, je suis actuellement en train de développer un script qui me permettra de convertir des documents Latex en HTML.
Je rencontre malheureusement un léger souci, pour modifier mes balises Latex en HTML j'utilise le module "re" et des regex.
Mon problème est le suivant lorsque deux balises sont imbriquées "underline{textbf{text souligné et en gras}}" par exemple.
J'arrive à modifier "underline{" en "<u>" mais lorsque je veux modifier le dernier "}" impossible à chaque fois c'est le premier qui est modifié...
Pouvez-vous m'aider ?

5 réponses

Avatar
Francois Lafont
Bonjour,
On 4/7/20 8:12 PM, xfitgit wrote:
Bonjour à tous, je suis actuellement en train de développer un script qui me
permettra de convertir des documents Latex en HTML.
Je rencontre malheureusement un léger souci, pour modifier mes balises Latex en
HTML j'utilise le module "re" et des regex.
Mon problème est le suivant lorsque deux balises sont imbriquées
"underline{textbf{text souligné et en gras}}" par exemple.
J'arrive à modifier "underline{" en "<u>" mais lorsque je veux modifier le
dernier "}" impossible à chaque fois c'est le premier qui est modifié...
Pouvez-vous m'aider ?

Donne déjà un exemple complet de ton code qui ne marche pas comme tu voudrais (pense
à préciser la version de Python que tu utilises). Et à partir de là, on verra comment
modifier ton code et en particulier ta regex.
Mon intuition est que sur l'exemple précis que tu nous donneras on pourra arriver à
quelque chose mais d'une manière générale je ne suis pas sûr qu'on puisse faire un truc
qui fonctionne. Je peux me tromper mais je crois que vérifier qu'une expression a
autant de parenthèses (resp balises) ouvrantes que de parenthèses (resp balises) fermantes
est typiquement le genre de chose qu'on ne peut pas faire en toute généralité avec
des regex. Ceci étant, je ne suis pas sûr de moi à 100%, je dis peut-être une bêtise.
À+
--
François Lafont
Avatar
Damien Wyart
Bonjour,
* xfitgit in fr.comp.lang.python:
Bonjour à tous, je suis actuellement en train de développer un script
qui me permettra de convertir des documents Latex en HTML. Je
rencontre malheureusement un léger souci, pour modifier mes balises
Latex en HTML j'utilise le module "re" et des regex. Mon problème est
le suivant lorsque deux balises sont imbriquées "underline{textbf{text
souligné et en gras}}" par exemple. J'arrive à modifier "underline{"
en "<u>" mais lorsque je veux modifier le dernier "}" impossible
à chaque fois c'est le premier qui est modifié...

Je ne réponds pas directement à la question et c'est un peu hors sujet
mais ce projet semble difficile à mener à bien en partant "de zéro" et
avec des expressions régulières.
Avez-vous testé des solutions existantes comme Pandoc (sans doute
l'approche la plus moderne et la plus robuste), TeX4ht ou htlatex (je
pense que ces outils ne sont plus tellement maintenus) ? Il existe
également pdf2htmlEX qui fonctionne bien sur les documents complexes :
https://github.com/pdf2htmlEX/pdf2htmlEX
Vous pourrez trouver pas mal d'informations ici, par exemple :
https://tex.stackexchange.com/questions/39309/convert-latex-to-html
--
DW
Avatar
Damien Wyart
* Francois Lafont in fr.comp.lang.python:
Je peux me tromper mais je crois que vérifier qu'une expression
a autant de parenthèses (resp balises) ouvrantes que de parenthèses
(resp balises) fermantes est typiquement le genre de chose qu'on ne
peut pas faire en toute généralité avec des regex.

C'est exact :
https://stackoverflow.com/questions/2778532/regular-expression-to-match-nested-braces
https://stackoverflow.com/questions/133601/can-regular-expressions-be-used-to-match-nested-patterns
https://stackoverflow.com/questions/546433/regular-expression-to-match-balanced-parentheses
même si on peut nuancer pour certaines variantes des regex
(https://stackoverflow.com/a/35271017). Cela ne concerne pas la
bibliothèque standard de Python, mais est possible avec le module
externe regex (https://stackoverflow.com/questions/26385984/recursive-pattern-in-regex).
--
DW
Avatar
Damien Wyart
Avez-vous testé des solutions existantes comme Pandoc (sans doute
l'approche la plus moderne et la plus robuste), TeX4ht ou htlatex (je
pense que ces outils ne sont plus tellement maintenus) ? Il existe
également pdf2htmlEX qui fonctionne bien sur les documents complexes :
https://github.com/pdf2htmlEX/pdf2htmlEX

Quelques précisions après avoir effectué des recherches complémentaires :
- TeX4ht est toujours maintenu
- d'autres solutions basées sur Python (ouf on revient dans le sujet :)
et activement maintenues existent également :
https://github.com/plastex/plastex
https://github.com/softcover/polytexnic
A moins d'un souhait de s'entraîner à la programmation, il n'y a donc
pas vraiment de raison de programmer un tel outil par soi même.
--
DW
Avatar
Francois Lafont
Hello,
On 4/9/20 4:33 PM, Damien Wyart wrote:
* Francois Lafont in fr.comp.lang.python:
Je peux me tromper mais je crois que vérifier qu'une expression
a autant de parenthèses (resp balises) ouvrantes que de parenthèses
(resp balises) fermantes est typiquement le genre de chose qu'on ne
peut pas faire en toute généralité avec des regex.

C'est exact :
https://stackoverflow.com/questions/2778532/regular-expression-to-match-nested-braces
https://stackoverflow.com/questions/133601/can-regular-expressions-be-used-to-match-nested-patterns
https://stackoverflow.com/questions/546433/regular-expression-to-match-balanced-parentheses
même si on peut nuancer pour certaines variantes des regex
(https://stackoverflow.com/a/35271017). Cela ne concerne pas la
bibliothèque standard de Python, mais est possible avec le module
externe regex (https://stackoverflow.com/questions/26385984/recursive-pattern-in-regex).

Ok, merci Damien pour ces précisions.
--
François Lafont