Ho letto le domande regex su questo sito ma il mio problema sembra essere un po 'diverso. Devo abbinare un numero di 2 cifre, come 23 a 75. Lo sto facendo su un sistema Unix HP-UX. Ho trovato esempi di 3 - 44 ma di qualsiasi numero di cifre, niente di ciò che è stato risolto in lunghezza, il che è un po 'sorprendente, ma forse non capisco la risposta di esempio di lunghezza variabile.Espressione regolare: intervallo di due cifre (23-79)?
risposta
Dato che non stai indicando se questo è in aggiunta a qualsiasi altro carattere (o nel mezzo di una stringa più grande), ho incluso la logica qui per indicare che cosa avresti bisogno di abbinare la parte numerica di un stringa. Questo dovrebbe portarti lì. Stiamo creando una gamma per i secondi numeri che stiamo cercando consentendo solo quei personaggi. Poi stiamo confrontandola con le altre gamme come or
:
(2[3456789]|[3456][0-9]|7[])
Come Oded notato che si può fare anche questo dal sub gamme sono anche accettati (dipende l'attuazione REGEX nell'applicazione che si sta utilizzando):
(2[3-9]|[3-6][0-9]|7[0-5])
sulla base del titolo è necessario modificare gli ultimi 5 ad un 9 per andare 75-79:
(2[3-9]|[3-6][0-9]|7[0-9])
Se si sta cercando di abbinare questi numeri specificamente come st squillare (dall'inizio alla fine) quindi utilizzare i modificatori ^
e $
per indicare l'inizio e la fine della stringa.
V'è un eccellente riferimento tecnico di Regex gamme qui:
http://www.regular-expressions.info/numericranges.html
Se stai usando qualcosa come grep e cercando di confrontare le righe che contengono il numero con altri contenuti allora si potrebbe fare qualcosa di simile questo per campi thru 79:
grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder
Potrebbe essere abbreviato a '(2 [3-9] | [3-6] [0-9] | 7 [0-5])' – Oded
A destra. Ho incontrato casi in cui questo non funziona in ogni implementazione ma secondo lo standard che dovrebbe. –
restituirà true se passi 2345 – SolidSnake
Hai due classi di numeri che si desidera abbinare:
- la cifra 2, seguito da una delle cifre comprese tra 3 e 9
- una delle cifre comprese tra 3 e 7, seguito da qualsiasi cifra
Edit: Beh, questa è la gamma del titolo (23-79).All'interno della vostra domanda (23-75), si dispone di tre:
- la cifra 2, seguito da una delle cifre comprese tra 3 e 9
- una delle cifre comprese tra 3 e 6, seguito da qualsiasi cifra
- la cifra 7, seguito da una delle cifre comprese tra 0 e 5
Quasi - fino a '75', non' 79'. – Oded
@Oded L'op ha scritto 79 nell'oggetto e poi 75 nel corpo del post. Non è chiaro quale voglia davvero. – Paulpro
Ci scusiamo per l'errore di battitura nell'esempio del titolo, i due numeri erano esempi, il punto chiave era solo di 2 cifre. Ma capisco cosa intendi, 79 si adatta all'intera gamma di [3-7] [0-9], il 75 era più preciso in quanto non potevo sempre riempire l'intera gamma. Pertanto, la risposta a 3 parti è ciò che stavo cercando. – user2414817
Questo strumento è esattamente quello che vi serve: Regex_For_Range
da 29 a 79: \b(2[3-9]|[3-7][0-9])\b
Da 29 a 75: \b(29|[3-6][0-9]|7[0-5])\b
E solo per divertimento, 192-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
:)
Questo dovrebbe farlo:
/^([2][3-9]|[3-6][0-9]|[7][0-5])$/
^
e $
renderà più rigoroso che corrisponderà solo a 2 numeri, quindi nel caso in cui si abbia i.e 234
non funzionerà.
Quindi hai downgoted e copiato la mia risposta? Non fantastico –
Inoltre, questo non funzionerà se usano qualcosa come 'grep' per abbinare una linea contenente i numeri che stanno cercando. –
@ AbsoluteƵERØ - no il mio amico non ho votato la tua risposta. Mi ci sono voluti più di 5 minuti per testare i requisiti, quindi l'ho postato e ho solo controllato la risposta. – SolidSnake
Se voglio 2 cifre gamma 0-63
/^[0-9]|[0-5][0-9]|6[0-3]$/
- [0-9] permetterà singola cifra da 0 a 9
- [0-5] [0-9] sarà permettono 00-59
- 6 [0-3] permetterà da 60 sino 63
in questo modo si può prendere delle espressioni regolari per tutte le due cifre Intervallo
- 1. Espressione regolare: intervallo numerico
- 2. Espressione regolare a 6 cifre
- 3. Espressione regolare sovrapposta
- 4. Espressione regolare per abbinare due frasi separate
- 5. HTML 5 - numero di espressione regolare
- 6. Espressione regolare di fronte
- 7. Problema di espressione regolare
- 8. espressione regolare per la convalida prezzo
- 9. Espressione regolare per numero di conto bancario?
- 10. Espressione regolare per trovare un'espressione regolare?
- 11. Espressione regolare collegamento automatico
- 12. Espressione regolare di Java "[.]" Vs "."
- 13. Formato di espressione regolare Swift?
- 14. Espressione regolare di lunghezza minima
- 15. Espressione regolare per acronimi
- 16. Clojure multilinea espressione regolare
- 17. Numeri JSON Espressione regolare
- 18. Semplifica questa espressione regolare
- 19. espressione regolare in iOS
- 20. Espressione regolare - Gruppi ripetuti
- 21. Python String.Replace espressione regolare
- 22. Lunghezza minima espressione regolare
- 23. espressione regolare \ Z (? Ms)
- 24. log4j espressione regolare? [{}]
- 25. Espressione regolare sostituire
- 26. c espressione regolare howto
- 27. Mercurial .hgignore espressione regolare
- 28. Espressione regolare Python
- 29. espressione regolare per tempo
- 30. Espressione regolare per corrispondenza "|"
Sei sicuro di voler fare un'espressione regolare qui? Sembra che la conversione in un tipo integrale seguita da un confronto tra interi potrebbe essere più appropriata. Soprattutto se la gamma può cambiare in futuro. – Paulpro
Consentitemi di leggere la raccomandazione di @ Paulpro - mentre una regex * può * fare questo, è uno strumento povero (sono tentato di dire "terribile") per il lavoro. –
Cosa c'è di sbagliato in '23 <= the_number <= 75'? –