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+
s*
wskazuje białe znaki (n, r, t, f, and " ")
(0 lub więcej razy (pasujących do największej kwoty możliwy))