CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[java] problème avec regex... -_-

sd460
sd460
Niveau 10
13 avril 2014 à 20:06:22

Bonsoir,
J'ai un problème avec une regex Java....

Voila, dans une string je récupere ca: http://pastebin.com/8WH3bReU, et plus spécifiquement la valeur de l'attribut "output". Je peux l'afficher à l'écran donc tout va bien.

Dans l'idée, je cherche à savoir si le contenu de la String contient "NOT VULNERABLE" ou "VULNERABLE". Impossible, je ne comprend pas pourquoi....

Voici le bout de code... : http://pastebin.com/0n8mqZBd

J'avais essayé au début uniquement avec un caractère espace au lieu de \\s, mais cela ne fonctionnant pas j'ai essayé avec \s.

ds idées du pourquoi du comment eet de la solution ?
Merci :)

sd460
sd460
Niveau 10
13 avril 2014 à 20:16:19

http://pastebin.com/8WH3bReU pour le premier lien

Caletlog
Caletlog
Niveau 10
13 avril 2014 à 20:27:18

Salut,

Pourquoi \\s ? Là, tu lui dis de matcher un "\" suivi d'un s. Pour un espace, c'est bien \s qu'il faut mettre.
Pour la seconde regex, elle match aussi bien VULNERABLE que NOT VULNERABLE, parce que tu as mis ".*" avant. Ici vu que t'as déjà vérifié que NOT VULNERABLE était pas présent ça passe, mais d'une manière générale c'est pas très solide comme regexp.

Donc
/.*NOT\sVULNERABLE.*/
devrait marcher.
Après je sais pas comment marchent les regexp en Java, mais normalement tu peux aussi faire /NOT\sVULNERABLE/ : puisque tu ne précises pas directement de contrainte de début de ligne (^) ni de fin ($), ça matchera de toute façon toute la ligne si elle contient l'expression, sans avoir besoin de lui spécifier que tu peux avoir quelque chose avant ou après.

Caletlog
Caletlog
Niveau 10
13 avril 2014 à 20:28:37

(enfin ça matchera pas toute la ligne, mais ça renverra vrai parce que le pattern a été trouvé)

sd460
sd460
Niveau 10
13 avril 2014 à 20:31:44

Le compilateur me renvoit 'invalid escape sequence' si on ne met que '\s'.
Pour la seconde regexp, c'est fait exprès, puisque je vérifie d'abord que NOT VULNERABLE ne marche pas.

Bunyan
Bunyan
Niveau 17
13 avril 2014 à 20:39:29

Pourquoi utilises-tu des expressions régulières ?
Un bête contains suffit largement à ton besoin, puisque tu ne recherche aucun pattern.

Le seul souci sera la casse... mais en mettant tout en majuscule ou minuscule avant le test de contenance (en accord avec la casse que tu chercheras), il est aisément résolu.

Sinon, c'est \\s en Java car dans les Strings, les \ sont naturellement échappés. Donc \s sort un problème d'échappement, "\s" ne représentant rien. Il faut donc échapper le premier anti-slash pour faire comprendre au compilo que ce n'est pas le caractère "\s", mais deux caractères à la suite "\" et "s".

sd460
sd460
Niveau 10
13 avril 2014 à 20:49:12

Je n'y connais rien en Java, j'aurai peut-être du le préciser...!

Ok, cela marche avec contains. Je te remercie pour ce petit indices ;)

Néanmoins, je ne comprends pas pourquoi cela ne fonctionne pas avec mon expression régulière... Je ne vais pas m'acharné, mais j'aimerai bien comprendre. Il est possible que cela soit lié à des problématiques retours charriot ? (genre unix / windows conversion, ...) ?

sd460
sd460
Niveau 10
13 avril 2014 à 20:56:39

J'ai essayé \\s en seconde intention, après que le simple espace ne donne pas de résultat....

Caletlog
Caletlog
Niveau 10
13 avril 2014 à 20:58:06

Ah okay, au temps pour moi, je savais pas comment les regexp étaient implémentées en Java :)
Donc si on veut matcher un caractère \ suivi d'un s, c'est \\\s qu'il faut? :o))

Bunyan
Bunyan
Niveau 17
13 avril 2014 à 21:00:07

Non, c'est \\\\s qu'il faut x)
Il faut échapper l'échappement qui échappe. C'est... déstabilisant, la première fois que l'on tombe dessus.

Caletlog
Caletlog
Niveau 10
13 avril 2014 à 21:06:04

Ah ouai quand même :noel:

J'aurais jamais cru dire ça un jour mais dans ce cas je crois que je préfère les bons vieux objets /regexp/ du Ruby ~ :hap: ~

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment