|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
Bonjour,
Je viens de faire une recherche sur le forum, et sur Google, mais ça fait deux jours que je sèche, et que je ne trouve pas de solutions ! Je cherche à faire une petit parser LaTeX Beamer en php. Dans un premier temps, je voudrais récupérer toutes les lignes commençant par un "\" (antislash), mais je n'y arrive pas. J'utilise la fonction preg_match_all. Ainsi, je ne comprends pas pourquoi lorsque ceci : preg_match_all("/\\(.*)/", $string, $res, PREG_SET_ORDER); me renvoie un tableau vide dans $res, alors que mon $string contient bien des lignes commençant par exemple par "\frame{" De plus malgré toutes les explications que je trouve sur les regex, j'ai beaucoup de mal à comprendre les délimiteurs. Quelqu'un pourrait-il m'expliquer la différence entre : preg_match_all("/\\(.*)/", $string, $res, PREG_SET_ORDER); preg_match_all("#\\(.*)#", $string, $res, PREG_SET_ORDER); preg_match_all("#\\(.*)#U", $string, $res, PREG_SET_ORDER); preg_match_all("#\\(.*)#s", $string, $res, PREG_SET_ORDER); EDIT : Je viens de trouver un super tutoriel sur les regex ( http://www.lumadis.be/regex/tuto_pcre.php )explicant les options des délimiteurs, mais quelle est la différence entre les deux premiers ? (entre / et # ?) Merci d'avance pour d'éventuelles réponses ! (et désolé si j'ai posté dans le mauvais forum, je ne savais pas trop où poster...) |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : février 2007 Messages : 475 ![]() |
Le problème c'est que pcre interprète le pattern comme étant '\(.*)', d'où un problème de parenthèses non balancées.
Ce pattern va choper tout ce qui suit le caractère '\' en début de ligne et sans capturer les commentaires en latex: Code :
preg_match_all('/^\\\((?:(?!\s*%%).)+)/m', $string, $res, PREG_SET_ORDER); Délimiteur #, modifieur U (Ungreedy) Pas correct: Délimiteur #, modifieur U (Ungreedy) Correct: Délimiteur /, modifieur U (Ungreedy) |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
MERCI BEAUCOUP !!! Après deux jours de galère je vais pouvoir avancer dans ce projet (devoir) !
Et merci pour les explications Et sans vouloir abusé, est-il possible de récupérer ce qu'il y a dans un motif de ce genre : \frame{ récupérer tout ce qu'il y a là dedans } sachant qu'il peut y avoir des antislash et des accolades fermantes à l'intérieur ? |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() Inscription : février 2007 Messages : 475 ![]() |
Code :
Genre '\begin{tabular}{bla{h}}', tu choperas 'tabular' ou '{bla{h}}' Pour lever cette limitation, on pourrait passer par des callbacks ou plusieurs séries de matches (ce qui est un peu dans la logique de ton devoir de parser) |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Merci beaucoup. Ça m'est d'une très grande aide.
J’étais en train d’essayer des choses, mais ça n’avait pas toute cette complexité !!Je viens de tester et c'est nickel. Maintenant je vais essayer de comprendre un petit peu tous les arguments !!! Merci encore |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com