La Pause Café du Forum Programmation [PART 3]

Salut Inzy!

hey :hello:

(sweet home)

R3Volt: si un programme java (dans un jar) embarque des ressources, un programmes lambda peut très bien le faire. Et y a pas forcément besoin de compilateur pour ça, suffit juste de connaître la façon dont fonctionne un programme :slight_smile:

Oui mais un .jar a une forme spécifique (c’est une archive zip :-° ), alors qu’un .exe est un fichier propre (pas une archive).

Suffit de le coller à la fin. Un exe n’est qu’une suite d’instructions que le système va exécuter dans l’ordre (avec éventuellement des sauts, mais toujours vers un endroit bien défini du fichier). Si tu rajoutes des données à la fin d’un fichier exe, cela ne doit -en principe- pas modifier son fonctionnement.
Edité le 12/06/2011 à 21:00

Merci kookiz33, c’est ce que je voulais dire (et que j’ai dis précédemment mais autrement en fait :))

:super:

Tiens j’ai besoin de votre expérience en PHP et en chaînes de caractères surtout…
Vous lisez quoi là ?

// Censure
$pattern = '/^(' . $cWord . ')+(' . $endings . ')\W*$/i';

Et surtout, comment n’avoir que les mots censurés + leurs terminaisons, et pas les caractères spéciaux, de concernés ?

D’avance, merci :jap:

Ca fait longtemps que j’ai pas manipulé de regex, mais je relève le défi à l’occasion, les plus avertis corrigeront mes erreurs.
Pour ta gouverne :
/^ = début du pattern
/ = fin du pattern
() = permettent de capturer leur contenu

  • = une fois ou zéro fois
  • = une fois ou plusieurs ou zéro fois
    \W = alphanum + _
    . = n’importe quel caractères n fois avec n entier positifs ou nul.

Ca veut dire que ta chaîne est censée être de la forme :
[blabla]$cWord[blabla]$endings[blabla][blabla2]
ou
[blabla]$endings[blabla][blabla2]
ou
[blabla2]
ou
[blabla]$endings[blabla2]

où [blabla] contient n’importe quel caractère(s) et [blabla2] contient seulement des caractères alphanum ou _.
Le tout est insensible à la case (le mode i à la fin après le / de fermeture du pattern.
Voilà ce que je peux te dire.
Aussi que tu peux récupérer les [blabla]$cWord[blabla] ou [blabla]$endings[blabla] si je ne m’abuse.

Ca t’a aidé?

Je ne vois pas du tout d’ou tu sors les [blabla]

Moi je lis :
Une chaîne fixe (les ^ et $ en début et fin de chaîne indiquent qu’elle doit obligatoirement convenir à cette forme).

Qui peut commencer par un ou plusieurs (le + au milieu) $cWord (reste à voir ce que contient $cWord), suivi d’un seul $endings, et enfin de tout ce qui n’est pas une lettre ou un chiffre (équivaut à la classe [^a-zA-Z0-9]), mais le étoile indique que tout ce qui n’est pas une lettre ou un chiffre peut apparaître zéro, une ou plusieurs fois.

Par exemple :
$cWord = “bonjour”;
$endings = “bye”;
$pattern = ‘/^(’ . $cWord . ‘)+(’ . $endings . ‘)\W*$/i’;
// $pattern = ‘/^(bonjour)+(bye)\W*$/i’;

Ce qui correspond à :
bonjourbye
bonjourbonjourbye
bonjourbye=)&
bonjourbonjourbye=)&

Etc…


[www.gethifi.com...](http://www.gethifi.com/tools/regex)
Exemple : a mettre en test : ^(bonjour)+(bye)\W*$ a mettre en texte: bonjourbonjourbye=)
De plus la fonction te retournera si tu l'utilises comme suit :
$matches = array();

$cWord = "bonjour";
$endings = "bye";
$pattern = '/^(' . $cWord . ')+(' . $endings . ')\W*$/i';
// $pattern = '/^(bonjour)+(bye)\W*$/i';

preg_match($pattern, $chaineATester, $matches);

Un var_dump() sur $matches te retournera :

$matches[0] = string(7) "bonjour";
$matches[1] = string(3) "bye";

En gros ce qui se trouve dans les parenthèses
Edité le 14/06/2011 à 15:50

Hu, les [blabla] c’est du texte exemple (si j’ai bien compris) ^^

Je comprends comme toi KisS ^^

Là où le pattern est mal chié, c’est que théoriquement, il est sensé traité tous les éléments comportant :
$cWords
$cWords.$endings
“tous les caractères qui ne sont pas alphanumériques”

sauf qu’en réalité, le pattern traite :
$cWords
$cWords.$endings
$endings
“tous les caractères qui ne sont pas alphanumériques s’ils ne sont pas précédés d’un caractère alphanumérique”

Et moi, en fait, ce que je veux, c’est qu’il traite
$cWords
$cWords.$endings
“Et surtout pas $endings seul, ni les caractères qui ne sont pas alphanumériques”

En gros, si dans $cWords j’ai “toto” et dans $endings j’ai “prout”, je veux que :
toto = true
totoprout = true
prout = false
et que les caractères hors alphanums ne soient pas emmerdés par le regex

Quelqu’un peut-il me bidouiller la regex pour solutionner ça ? :whistle:

Bah le + indique qu’il faut forcément un ou plusieurs $cWord, normalement ça correspond à ce que tu cherches :slight_smile:

Non, car à ce jour, il prend tous les symboles non alphanumériques saufs s’ils sont précédés d’un caractère alphanumérique, et moi, je ne veux pas qu’il y touche, à ces caractères alphanums ^^

Autant pour moi, j’ai mal lu.
Les points n’étaient que la concaténation des variables car la quote est simple, et non le symbole point en regex…
De plus, je viens de vérifier, le + et 1 ou plusieurs comme l’a dit R3v0lt, et non 0 ou 1 qui est le ?.

Ca se voit tant que ça que je n’ai fait ni PHP ni regex depuis plus de 3 ans [:shy]

Sinon là je suis en stage recherche dans le jeu vidéo, et je développe un système de génération procédurale de mondes en C++ qui exporte en maya. Je débute mais c’est stylé :)!

ça a l’air sympa ça :slight_smile:

Tu pars de rien ou tu as de la doc ?

Je pars d’une librairie de base développée par mon tuteur au fil des ans et des projets qui défini de nombreuses méthodes classiques dans le domaine, mais très mal documentée. Heureusement il m’oriente pas mal car il voit déjà bien mieux que moi comment faire la chose.

Bon si j’comprends bien, faut que j’me débrouille avec mon regex ?^^

xD
Mais pourtant elle est toute conne.
Remplace tes variables PHP et va sur l’outil de gethifi. Ca permet d’arriver très vite au résultat :slight_smile:

Pourquoi veux-tu que je remplace mes variables ? J’veux simplement virer la prise en compte des caractères alphanumériques…