/ / Co to jest Java Regex, aby sprawdzić „= 2245” lub „= 545” lub „= 22” itd.? - java, regex

Co to jest Java Regex, aby sprawdzić "= 2245" lub "= 545" lub "= 22" itd.? - java, regex

Ok, chcę sprawdzić, czy String ma = jako pierwszy znak, a następnie dowolna liczba, jeśli między nimi jest spacja = i numer, to też jest w porządku.

Ok, oto przykład

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

Więc oto co zrobiłem

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

Działa to, jeśli pomiędzy nimi nie ma miejsca = i numer

Więc zmieniłem na:

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

To zadziała, jeśli pomiędzy 1 = i numer i nie będą działać w innych przypadkach.

Jak to naprawić?

Odpowiedzi:

5 dla odpowiedzi № 1
"=\s*\d+"

The * oznacza „zero lub więcej powtórzeń”, więc zadziała to, jeśli spacje są, czy nie. The d to alternatywny sposób pisania [0-9].


2 dla odpowiedzi nr 2

Możesz użyć tego wyrażenia regularnego:

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

Demo pokazuje, które pasują, a które nie pasują.

Wyjaśnienie

  • The ^ anchor zapewnia, że ​​jesteśmy na początku łańcucha
  • = pasuje do literału =
  • [ ]* dopasowuje spacje opcjonalne. Nie potrzebujesz nawiasów, ale jest łatwiejszy do odczytania.
  • [0-9]+ dopasowuje jedną lub więcej cyfr
  • The $ anchor zapewnia, że ​​jesteśmy na końcu łańcucha

W języku Java:

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

1 dla odpowiedzi nr 3
if(s.matches("=\s*\d+")){
return true;
}

Powinieneś użyć *, co oznacza „zero lub więcej”.

Sprawdź to połączyć


0 dla odpowiedzi nr 4

Spróbuj z =s*d+

wprowadź opis obrazu tutaj

s* wskazuje białe znaki (n, r, t, f, and " ") (0 lub więcej razy (pasujących do największej kwoty możliwy))