IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Calcul dans une String


Sujet :

JavaScript

  1. #21
    Invité
    Invité(e)
    Par défaut
    hi CosmoKnacki,

    le look ahead n'est pas nécessaire : ) (puisque c'est de toute facon ce qu'on veut capturer...)

    edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    txt = txt.replace(/(?<!\S)([2-9]\d*|1\d+)(?!\S)/g, m => m*8);

  2. #22
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    @galerien69

    Le rôle du lookahead (?!\S) est de contrôler que le nombre n'est pas suivi par autre chose qu'un caractère blanc ou la fin de la chaîne. De plus, comme celui-ci n'est qu'un test qui ne consomme pas de caractères, cela permet des matches successifs, par exemple avec la chaîne "12 24 13 46" et la pattern (?:^|\s)([2-9]\d*|1\d+)(?:\s|$) je n'obtiendrai qu'un nombre sur deux (puisque les espaces ne peuvent être consommés deux fois).

    Si maintenant tu voulais parler du groupe non-capturant (?:...), son intérêt est justement de grouper sans générer de capture.

    @NoSmoking
    devine à qui je pensais
    C'est gentil, mais tu sais il y en à d'autres sur ce forum, et quant à ceux qui ont des doutes sur le sujet, ils ne se débrouillent pas si mal en fin de compte.

  3. #23
    Invité
    Invité(e)
    Par défaut
    je parle pas du negative lookahead mais bien du look ahead non capturing group (dont j'ai copié le code dans l'edit de mon dernier post)

    je le recopie colle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    > txt="12 24 13 46"
    '12 24 13 46'
    > txt = txt.replace(/(?<!\S)([2-9]\d*|1\d+)(?!\S)/g, m => m*8);
    '96 192 104 368'
    et vu que le matching correspond ici au lookhead (?: ) groupe capturé , ben on peut se priver du (?: ) et simplement capturer
    Dernière modification par Invité ; 09/10/2018 à 13h21.

  4. #24
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Oui, on peut et ça ne change pas le résultat. Mais un des intérêts du groupe non capturant, c'est d'éviter le coût d'une capture (stockage d'une partie du match en plus du match). Utiliser une capture n'a de sens que lorsqu'on à besoin d'agir ou d'extraire une partie du match. En fait tu devrais te poser la question dans l'autre sens: ai-je besoin de capturer?

  5. #25
    Invité
    Invité(e)
    Par défaut
    Hello,


    c'est ici le salon où on se réunit pour discuter autour d'un string ?
    Vous buvez quoi ? café ? thé ? bière ? cognac ? *



    * A boire avec modération...
    (avec "modérateur", ça marche aussi ou pas ?)

  6. #26
    Invité
    Invité(e)
    Par défaut
    En fait tu devrais te poser la question dans l'autre sens: ai-je besoin de capturer?
    oui (je suis d'accord)

    en fait j'ai fait l'amalgame (comme le suggère mes barrés) entre non capturing et lookahead et comme un lookahead ne fail pas forcément la regex (vu qu'il consomme pas et que faut potentiellement attendre apres) le premier réflexe était de ne pas faire un lookahead. sauf que c'était pas un lookahead mais un groupe non capturant

  7. #27
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Vous buvez quoi ? café ? thé ? bière ? cognac ? *



    * A boire avec modération...
    (avec "modérateur", ça marche aussi ou pas ?)
    Pour moi ce sera un AquaRosa glacé avec un assortiment de mignardises bio.

Discussions similaires

  1. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    Réponses: 14
    Dernier message: 14/02/2005, 11h54
  2. Recuperer un champ calculé dans une variable....
    Par vijeo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2004, 14h57
  3. [DOM] sauver dans une String
    Par hocinema dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 28/09/2004, 21h44
  4. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31
  5. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo