Rechercher : dans
Par :

[PHP] expressions régulière

Dernière réponse le 1 oct 2009 à 18:34:00 tsunamidream, le 1 oct 2009 à 13:42:41 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un script PHP qui lit un fichier texte ligne par ligne.
J'ai fais une regex qui recherche une expression sur cette ligne.
Cependant, avec le changement de moi cette regex ne fonctionne plus et je ne sais pas comment la modifié correctement.

Lorsque le jour était à 2chiffres cela fonctionnait bien :
Tue Sep 29 09:56:38 2009
'#^[A-Z][a-z]{2} [A-Z][a-z]{2} [0-9]{1,2}[ ([0-9]{2}:){2}[0-9]{2} [0-9]{4}#'

Maintenant, ca ne fonctionne plus avec cette ligne :
Thu Oct 1 11:57:50 2009
Le chiffre des dixaines est remplacé par un espace.

Je ne peux modifier les lignes que je lis car elles sont générées par un logiciel.

Merci pour votre aide,
Un intelligent assis va moins loin, qu'un con qui avance !

Meilleures réponses pour « [PHP] expressions régulière » dans :
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

Alain_42, le 1 oct 2009 à 14:02:06

Et si tu rajoutes l'espace dans [0-9]

'#^[A-Z][a-z]{2} [A-Z][a-z]{2} [0-9 ]{1,2}[ ([0-9]{2}:){2}[0-9]{2} [0-9]{4}#' 

Répondre à Alain_42

2

P@t@ch0n, le 1 oct 2009 à 14:04:39

Cela m'étonnerait que cette expression fonctionne.

Il y a un crochet ouvrant en trop juste après ce que tu as mit en gras.

Répondre à P@t@ch0n

3

tsunamidream, le 1 oct 2009 à 15:03:41

Oui j'ai vu trop tard pour le crochet ouvrant c'est lors du copié collé que j'ai fait une erreur.

Mais après plus d'une heure de recherche j'ai fini par trouver quelque chose. C'est peut être pas la méthode la plus simple mais ça a le mérite de fonctionner.

#^[A-Z][a-z]{2} [A-Z][a-z]{2} ((\s[0-9])|([0-9]{2})) ([0-9]{2}:){2}[0-9]{2} [0-9]{4}#

merci à tous.
Un intelligent assis va moins loin, qu'un con qui avance !

Répondre à tsunamidream

4

 P@t@ch0n, le 1 oct 2009 à 18:34:00

Pourquoi ne pas utiliser tout simplement un quantificateur sur les espaces ?

'#^[A-Z][a-z]{2} +[A-Z][a-z]{2} +[0-9]{1,2} +([0-9]{2}:){2}[0-9]{2} +[0-9]{4}$#'


Et si il peut y avoir des tabulations, utilise :blank:

'#^[A-Z][a-z]{2}:blank:+[A-Z][a-z]{2}:blank:+[0-9]{1,2}:blan­k:+([0-9]{2}:){2}[0-9]{2}:blank:+[0-9]{4}$#'


Ajoute une double paire de crochet autour de :blank:, ccm interprète ça comme des liens...

Répondre à P@t@ch0n