regular expr

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : regular expr

Re: regular expr

par gui » 19 mai 2010, 17:37

je teste

Toujours une erreur:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /opt/lampp/htdocs/profils/score.class.php on line 43

voici ce que j'ai mis
preg_match('^(?:.(?<!\s))+\s((?:.(?<!\s))+)\s', $ligne, $matches);
			
$score=$matches[1];

Mais pas de probleme je fais avec avec explode ca marche très bien.
Merci pour tout encore une fois stealth35

Re: regular expr

par stealth35 » 19 mai 2010, 17:27

7.9 2009-04-11
Voilà ce qu'il me renvoie
c'est pas vieux pourtant, on dirais qui prend pas en compte les balise non-capturante, si tu fais juste comme ca :
^(.(?<!\s))+\s((.(?<!\s))+)\s

Re: regular expr

par gui » 19 mai 2010, 17:24

7.9 2009-04-11
Voilà ce qu'il me renvoie
Avec explode ca fonctionne, au passage su qq veux savoir comment

$space=explode("    ",$ligne);							
$score=$space[1];

Merci pour tout t un boss des expre, encore merci

Re: regular expr

par stealth35 » 19 mai 2010, 17:20

erreur du type "Undefined offset:"
Mais t'as peut être raison ce serai mieu d'utiliser explode, merci pour ton aide si tu as la solution à cette erreur je suis pret à l'entendre mais te prend pas la tête jvai vite régler ca avec explode

ca viens peu etre de la version de pcre, fais un
echo PCRE_VERSION;

Re: regular expr

par gui » 19 mai 2010, 17:17

erreur du type "Undefined offset:"
Mais t'as peut être raison ce serai mieu d'utiliser explode, merci pour ton aide si tu as la solution à cette erreur je suis pret à l'entendre mais te prend pas la tête jvai vite régler ca avec explode

Re: regular expr

par stealth35 » 19 mai 2010, 17:12

quelle erreur ? :wink:

Re: regular expr

par gui » 19 mai 2010, 17:10

jsuis dégouté ca marche pas

preg_match('/^(?:.(?<!\s))+\s((?:.(?<!\s))+)\s/', $ligne, $matches);
$score=$matches[1];

Il me renvoie une erreur, peutêtre due au delimiteur pourtant ceux ci me semble bon..

Re: regular expr

par stealth35 » 19 mai 2010, 17:05

cheez moi ca marche
$str1 = '>B_1 7.500 750 pos. 136 - 145 1D8E:B';
$str2 = '>BAB78:C_4 3.200 320 pos. 346 - 355 1';
	
preg_match('/^(?:.(?<!\s))+\s((?:.(?<!\s))+)\s/', $str1, $matches1);
preg_match('/^(?:.(?<!\s))+\s((?:.(?<!\s))+)\s/', $str2, $matches2);
	
var_dump($matches1, $matches2);

Code : Tout sélectionner

array(2) { [0]=> string(11) ">B_1 7.500 " [1]=> string(5) "7.500" } array(2) { [0]=> string(17) ">BAB78:C_4 3.200 " [1]=> string(5) "3.200" }
sinon tu fais un explode, qui serait plus simple et optimisé

Re: regular expr

par gui » 19 mai 2010, 17:02

Pour les délimiteur, ceux ci sont bien en place
pour répondre à ton autre question oui la chaine peut être differente surtout au debut, il peut y avoir nimporte quel caractère avant le premier espace, l'élément de distinction c'est le premier espace:654654651
>B_1 7.500 750 pos. 136 - 145 1D8E:B
>BAB78:C_4 3.200 320 pos. 346 - 355 1
ect
Je dois capture ce qu'il y'a entre les 2 espace 1 et 2
merci pour tes réponses
je teste merci

Re: regular expr

par stealth35 » 19 mai 2010, 16:57

C'est un peu violent, y'a pas plus simple pour récupérer se qu'il ya entre le premier et le deuxieme espace??
ps: ca ne marche pas sur mon script dsl
c'est exactement ce que fais le regexp
qu'est ce que ta mis dans ton code ? ta bien mis les délimiteur ? la chaine est vraiment comme ca ou y'a d'autre chose avant après ?

EDIT : voir pour prendre tout entre le 1er et le 2eme espaces ca serait : ^(?:.(?<!\s))+\s((?:.(?<!\s))+)\s

Re: regular expr

par gui » 19 mai 2010, 16:53

C'est un peu violent, y'a pas plus simple pour récupérer se qu'il ya entre le premier et le deuxieme espace??
ps: ca ne marche pas sur mon script dsl

Re: regular expr

par stealth35 » 19 mai 2010, 16:47

essaye comme ca :
^(?:.(?<!\s))+\s([\d\.]+)

regular expr

par gui » 19 mai 2010, 16:35

bonjour
en mettant cette expre


preg_match('/.+\s (\S+)/', $ligne, $matches);
$score=$matches[1];


>A_1 7.900 790 pos. 162 - 171 1DVP:A
En travaillant sur cette ligne j'aimerai recupérer 7.900 (le premier chiffre apres l'espace)
Mais lui me renvoie 171 le chiffre avant le dernier espace