/ / Qu'est-ce que Java Regex à vérifier “= 2245” ou “= 545” ou “= 22”, etc.? - java, regex

Qu'est-ce que Java Regex à vérifier «= 2245» ou «= 545» ou «= 22», etc.? - java, regex

Ok, je veux vérifier si une chaîne a = comme premier caractère et suivi d'un nombre quelconque, s'il y a un espace entre = & nombre alors c'est aussi ok.

Ok, voici l'exemple,

String s="=2245"; --> return true
String s="=   545"; --> return true
String s="= 22"; --> return true
String s="= m  545"; --> return false
String s="=m545"; --> return false

Alors voici ce que j'ai fait

if(s.matches("=[0-9]+")){
return true;
}

Cela fonctionnera s'il n'y a pas d'espace entre = & nombre

J'ai donc changé pour:

if(s.matches("=\s[0-9]+")){
return true;
}

Ensuite, cela fonctionnera s’il ya 1 espace entre le = & nombre & ne fonctionnera pas dans d’autres cas.

Alors, comment y remédier?

Réponses:

5 pour la réponse № 1
"=\s*\d+"

le * signifie "zéro répétition ou plus", donc cela fonctionnera si les espaces sont présents ou non le d est une autre façon d'écrire [0-9].


2 pour la réponse № 2

Vous pouvez utiliser cette regex:

^=[ ]*[0-9]+$

La démo vous montre ce qui correspond et ne correspond pas.

Explication

  • le ^ anchor affirme que nous sommes au début de la chaîne
  • = correspond au littéral =
  • [ ]* correspond aux espaces optionnels. Vous n’avez pas besoin des crochets mais c’est plus facile à lire.
  • [0-9]+ correspond à un ou plusieurs chiffres
  • le $ anchor affirme que nous sommes à la fin de la chaîne

En Java:

Pattern regex = Pattern.compile("^=[ ]*[0-9]+$");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}

1 pour la réponse № 3
if(s.matches("=\s*\d+")){
return true;
}

Vous devriez être utiliser * cela signifie "zéro ou plus".

Vérifie ça lien


0 pour la réponse № 4

Essayer avec =s*d+

entrer la description de l'image ici

s* indique les espaces (n, r, t, f, and " ") (0 ou plus de fois (correspondant au plus grand nombre possible))