Przeczytałem pytania dotyczące wyrażeń regularnych na tej stronie, ale mój problem wydaje się być nieco inny. Muszę dopasować 2-cyfrowy numer, na przykład 23 do 75. Robię to w systemie Unix HP-UX. Znalazłem przykłady 3 - 44, ale też dowolną cyfrę, nic, co jest ustalone w długości, co jest nieco zaskakujące, ale być może nie rozumiem przykładowej odpowiedzi o zmiennej długości.Wyrażenie regularne - zakres dwóch cyfr (23-79)?
Odpowiedz
Ponieważ nie wskazujesz, czy jest to dodatek do innych znaków (lub w środku większego ciągu znaków), dodałem tutaj logikę, aby wskazać, co jest potrzebne do dopasowania liczby części strunowy. To powinno cię tam zabrać. Tworzymy zakres dla drugich liczb, których szukamy, dopuszczając tylko te postacie. Wtedy jesteśmy porównując ją do innych zakresów jako or
:
(2[3456789]|[3456][0-9]|7[])
Jak Oded zauważyć można to zrobić również od podkolejki zakresy są również akceptowane (w zależności od wykonania regex w aplikacji używasz):
(2[3-9]|[3-6][0-9]|7[0-5])
podstawie tytułu byś zmienił w ostatnich 5 do 9, aby przejść od 75-79:
(2[3-9]|[3-6][0-9]|7[0-9])
Jeśli próbujesz dopasować te numery specjalnie jako st ring (od początku do końca), wtedy użylibyście modyfikatorów ^
i $
, aby wskazać początek i koniec ciągu.
Jest doskonały odniesienia techniczny Regex waha się tutaj:
http://www.regular-expressions.info/numericranges.html
Jeśli używasz coś jak grep i stara się dopasować wiersze zawierające numer z innej treści, to możesz zrobić coś takiego to dla zakresów thru 79:
grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder
Można skrócić do '(2 [3-9] | [3-6] [0-9] | 7 [0-5])' – Oded
Dobrze. Wpadłem na przypadki, w których to nie działa w każdej implementacji, ale zgodnie ze standardem powinno. –
to się zwróci, jeśli przejdziesz 2345 – SolidSnake
masz dwie klasy liczb chcesz dopasować:
- cyfrą 2, a następnie jedną z liczb od 3 do 9
- jedną z liczb od 3 do 7, a następnie przez każdą cyfrę
Edycja: No, to zakres Tytułowa (23-79).W swoim pytaniu (23-75), masz trzy:
- cyfra 2, a następnie przez jedną z cyfr między 3 a 9
- jednej z cyfr od 3 do 6, a następnie dowolną cyfrę
- cyfra 7, a następnie jedną z cyfr od 0 do 5
Prawie - do "75", a nie "79". – Oded
@Oded The op napisał 79 w temacie, a następnie 75 w treści postu. Nie jest jasne, czego naprawdę chce. – Paulpro
Przeprosiny za literówkę w tytule przykładu, dwie liczby były przykładami, kluczowym punktem były tylko 2 cyfry. Ale rozumiem, co masz na myśli, 79 pasuje do całego zakresu [3-7] [0-9], 75 było dokładniejsze, ponieważ nie zawsze mogłem wypełnić cały zakres. Tak więc szukam odpowiedzi na 3 części. – user2414817
narzędzie to jest dokładnie to, czego potrzebujesz: Regex_For_Range
Od 29 do 79: \b(2[3-9]|[3-7][0-9])\b
Od 29 do 75: \b(29|[3-6][0-9]|7[0-5])\b
I tak dla zabawy, od 192 do 1742: \b(19[2-9]|[2-9][0-9]{2}|1[0-6][0-9]{2}|17[0-3][0-9]|174[0-2])\b
:)
Narzędzie ma teraz podpowiedź poświadczeń, czy znasz właścicieli? – weston
@weston Too bad! Skontaktuję się z nimi, aby poznać przyczynę tego uwierzytelnienia i wrócę do Ciebie. – sp00m
Cóż, jeśli je znasz, może uda ci się przekonać ich do otwarcia źródła. Opublikuj na githubie, lub tutaj – weston
ten powinien zrobić:
/^([2][3-9]|[3-6][0-9]|[7][0-5])$/
^
i $
będzie to ścisłe że dopasuje tylko 2 numery, więc w przypadku, gdy masz i.e 234
, to nie zadziała.
A więc przegłosowałeś i skopiowałeś moją odpowiedź? Nie fajnie. –
Dodatkowo to nie zadziała, jeśli używają czegoś podobnego do 'grep', aby dopasować wiersz zawierający szukane liczby. –
@ AbsoluteƵERØ - nie mój przyjaciel, którego nie głosowałem, głosuję na twoją odpowiedź. Zajęło mi to ponad 5 minut, aby przetestować wymagania, a następnie wysłałem go, a następnie JUST sprawdził swoją odpowiedź. – SolidSnake
Jeśli chce 2 cyfra zakres 0-63
/^[0-9]|[0-5][0-9]|6[0-3]$/
- [0-9] pozwoli jednej cyfry od 0 do 9
- [0-5], [0-9] Czy pozwalają od 00 do 59
- 6 [0-3] pozwoli od 60 do 63
ten sposób można wziąć wyrażenie regularne dla każdej dwie cyfry Zakres
- 1. Wyrażenie regularne - zakres (2-16)?
- 2. Wyrażenie regularne dla 2 lub 5 cyfr
- 3. Wyrażenie regularne do sprawdzania cen
- 4. HTML 5 - liczba wyrażenie regularne
- 5. Lepszy sposób na wyrażenie regularne
- 6. Wyrażenie regularne JavaScript pasujące do dwóch ciągów znaków
- 7. Zwiększ wyrażenie regularne. Nazwana grupa w dwóch częściach
- 8. Wyrażenie regularne Sanitize (PHP)
- 9. Wyrażenie regularne lookbehind problemem
- 10. Clojure multiline wyrażenie regularne
- 11. Wyrażenie regularne obciąć ciąg
- 12. c Wyrażenie regularne howto
- 13. debugowania Perl Wyrażenie regularne
- 14. MSSQL Wyrażenie regularne
- 15. Jak dekompilować wyrażenie regularne?
- 16. Wyrażenie regularne równoważne chomp
- 17. email wyrażenie regularne
- 18. Wyrażenie regularne zastępuje
- 19. Wyrażenie regularne negatywne mecz
- 20. Wyrażenie regularne Wildcard Matching
- 21. wyrażenie regularne w iOS
- 22. Python string.replace wyrażenie regularne
- 23. Wyrażenie regularne pasujące tylko do liter
- 24. Wyrażenie regularne dla liczb arabskich
- 25. JavaScript Wyrażenie regularne Usuń spacje
- 26. Wyrażenie regularne w skrypcie Bash
- 27. SQL Server wyrażenie regularne ograniczenie
- 28. Wyrażenie regularne z alfabetem cyrylicy
- 29. Perl Split i wyrażenie regularne
- 30. Wyrażenie regularne do cytowania legalnego
Czy na pewno chcesz skorzystać z wyrażenia regularnego? Wygląda na to, że bardziej odpowiednie może być przekształcenie na typ całkowy, a następnie porównanie liczb całkowitych. Zwłaszcza jeśli zasięg może się zmienić w przyszłości. – Paulpro
Pozwolę sobie po raz drugi @ Paulpro zalecenie - podczas gdy regex * może * to zrobić, to jest słabe (mam ochotę powiedzieć "straszne") narzędzie do pracy. –
Co jest nie tak z '23 <= the_number <= 75'? –