Cześć,
mam taki problem mam jakiś tekst np. "Due to too many attempts to log in, the account has been suspended for 15 minute(s).". Chciałbym go porównać z innym tekstem, identycznym z taką różnicą, że czas może być różny. Zamiast 15 może być np. 5.
Czyli chciałbym mieć stringa jak wyżej tylko, żeby liczba minut dopasowywała się do tej z pobranego innego stringa.
Jak skonstruować takiego stringa?
Jest jakoś możliwość, żeby w miejsce liczby podać jakiegoś wildcard? Próbowałem z \d{1}, ale coś chyba, źle rozumiem jak to działa :(
Regex w Stringu
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 259
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2787
\d{1} sprawdza czy jest dokładnie jedna cyfra. spróbuj \d+
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
Zalezy ilu cyfrowa ma być ta liczba minut:
\d - dokładnie jedna cyfra;
\d+ - jedna lub więcej cyfra;
\d{<tu liczba ile dokładnie ma być cyfr>} ;
\d\d? - jedna lub dwie cyfry, tu juz mozna kombinować: d\d?\d? - od jednej do trzech cyfr, itd...
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 259
Mhm, tylko jak porównać te stringi czy jeden jest równy drugiemu? Obecnie mam coś takiego:
stringPattern.contains(string)
Gdzie ten pierwszy to ""Due to too many attempts to log in, the account has been suspended for \d+ minute(s).",
a drugi "Due to too many attempts to log in, the account has been suspended for 15 minute(s)."
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 3573
\d\d? - jedna lub dwie cyfry, tu juz mozna kombinować: d\d?\d? - od jednej do trzech cyfr, itd...
A nie 0 lub 1?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2787
No nie no, tak to nie. Obczaj klasy Pattern, Matcher
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
barslo napisał(a):
Mhm, tylko jak porównać te stringi czy jeden jest równy drugiemu? Obecnie mam coś takiego:
stringPattern.contains(string)Gdzie ten pierwszy to ""Due to too many attempts to log in, the account has been suspended for \d+ minute(s).",
a drugi "Due to too many attempts to log in, the account has been suspended for 15 minute(s)."
https://docs.oracle.com/javase/tutorial/essential/regex/test_harness.html
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 259
No dobra doszedłem do czegoś takiego:
Pattern p = Pattern.compile("Due to too many attempts to log in, the account has been suspended for \\d+ minute(s).");
Matcher m = p.matcher("Due to too many attempts to log in, the account has been suspended for 1 minute(s).");
m.matches();
Jednak zwracam mi fail.
Intellij podpowiada mi coś jak by z tymi nawiasami było coś nie tak.
