Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-05-2013, 07:34   #1
candela
Member
 
L'Avatar di candela
 
Iscritto dal: May 2003
Messaggi: 284
regex pipe (|)

Buon giorno,
sto utilizzando le espressioni regolari per validare una serie di dati in un programma, ma ho dei problemi con le espressioni alternative.
Per esempio, un valore tra 0 e 100 con valore 999 per non noto.
le singole parti mi funzionano correttamente (nessuna di queste accetta 200):
^[0-9]{1,2}$
^100$
^999$
se faccio:
^[0-9]{1,2}|100|999$
non funziona più e mi accetta pure 200 (tanto per fare un esempio)!

Cosa sbaglio nelle condizioni con il | (pipe)?
grazie
__________________

CANON A80 --> SX110 --> 550D
candela è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2013, 08:29   #2
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Codice:
^(999|[0-9][0-9]|100)$
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2013, 12:30   #3
candela
Member
 
L'Avatar di candela
 
Iscritto dal: May 2003
Messaggi: 284
grazie,
nel frattempo avevo risolto chidendo e riaprendo la stringa:
Codice:
^[0-9]{1,2}$|^100$|^999$
credi che ci sia differenza tra le due?
__________________

CANON A80 --> SX110 --> 550D
candela è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2013, 12:44   #4
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
il | usa tutto quello che c'è a destra o sinistra quindi se vuoi che ^$ sia sempre preso devi sempre riprenderlo

Pensala come

Codice:
a|b a "oppure" b

In alternativa se vuoi prendere abba|aba puoi usare abb?a (? rende opzionale la lettera precedente o gruppo se racchiuso tra () )
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2013, 12:46   #5
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
puoi provarle "live" qui cmq: http://regexpal.com/
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 14:20   #6
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da The_ouroboros Guarda i messaggi
il | usa tutto quello che c'è a destra o sinistra quindi se vuoi che ^$ sia sempre preso devi sempre riprenderlo

Pensala come

Codice:
a|b a "oppure" b

In alternativa se vuoi prendere abba|aba puoi usare abb?a (? rende opzionale la lettera precedente o gruppo se racchiuso tra () )
qual'è la differenza tra
Codice:
egrep '^(|1)'
e

Codice:
egrep '^(.|1)'
?
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 14:25   #7
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
.


Sent from my iPad Air using Tapatalk
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 15:03   #8
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da The_ouroboros Guarda i messaggi
.


Sent from my iPad Air using Tapatalk
??
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 15:11   #9
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Non credo che il pattern '^(|1)' sia sintatticamente corretto, stai chiedendo di identificare una stringa che inizia con "1" oppure con boh, il che non ha alcun senso, deve esserci sempre un espressione a sinistra del carattere "|".

Ultima modifica di Daniels118 : 21-11-2014 alle 15:50.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 15:21   #10
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Non credo che il pattern '^(|1)' sia sintatticamente corretto, stai chiedendo di identificare una stringa che inizia con "1" oppure con boh, il che non ha alcun senso, deve esserci sempre un espressione a sinistra del carattere "|".
allora questo cosa vuol dire ?
Codice:
ls -pR | egrep -v '(^(|\..*:)|/)$'
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 15:47   #11
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Mi correggo, ha perfettamente senso, se non c'è nulla vuol dire che deve identificare una stringa vuota.
Tornando alla tua domanda quindi:
'^(|1)' prende tutte le righe vuote o che cominciano con "1"
'^(.|1)' prende tutte le righe che cominciano con un qualunque carattere o con "1" (che è una condizione superflua)
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 15:51   #12
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Mi correggo, ha perfettamente senso, se non c'è nulla vuol dire che deve identificare una stringa vuota.
Tornando alla tua domanda quindi:
'^(|1)' prende tutte le righe vuote o che cominciano con "1"
'^(.|1)' prende tutte le righe che cominciano con un qualunque carattere o con "1" (che è una condizione superflua)
Infatti con .* prendi 0 o più caratteri (con .? 1 o più)
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2014, 16:09   #13
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Mi correggo, ha perfettamente senso, se non c'è nulla vuol dire che deve identificare una stringa vuota.
Tornando alla tua domanda quindi:
'^(|1)' prende tutte le righe vuote o che cominciano con "1"
'^(.|1)' prende tutte le righe che cominciano con un qualunque carattere o con "1" (che è una condizione superflua)
ok grazie adesso è chiaro
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2014, 09:37   #14
SnakePlissken
Member
 
L'Avatar di SnakePlissken
 
Iscritto dal: Aug 2004
Messaggi: 39
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
'^(|1)' prende tutte le righe vuote o che cominciano con "1"
Non mi risulta: '^(|1)' prende tutte le righe.
  1. ^ prendi l'inizio della stringa
  2. (|1) prendi niente oppure prendi '1'

Codice:
# echo "ciccio" | grep -P '^(|1)'
ciccio
In questo caso prende prima l'inizio della stringa e poi niente (in pratica non consuma nessun carattere, e lo si può vedere aggiungendo l'opzione -o a grep). Se (in altri contesti) cattura solo righe vuote è perché ci sono impliciti ^ e $.
__________________
Quello che davvero mi interessa è se Dio, quando creò il mondo, aveva scelta.
SnakePlissken è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2014, 10:12   #15
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Mi sa che hai ragione, sono un po' arrugginito, mi serve un bel ripasso.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2014, 15:17   #16
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da SnakePlissken Guarda i messaggi
Non mi risulta: '^(|1)' prende tutte le righe.
  1. ^ prendi l'inizio della stringa
  2. (|1) prendi niente oppure prendi '1'

Codice:
# echo "ciccio" | grep -P '^(|1)'
ciccio
In questo caso prende prima l'inizio della stringa e poi niente (in pratica non consuma nessun carattere, e lo si può vedere aggiungendo l'opzione -o a grep). Se (in altri contesti) cattura solo righe vuote è perché ci sono impliciti ^ e $.
si ma tu hai usato le regex di Perl...
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2014, 18:47   #17
SnakePlissken
Member
 
L'Avatar di SnakePlissken
 
Iscritto dal: Aug 2004
Messaggi: 39
Quote:
Originariamente inviato da toni00t Guarda i messaggi
si ma tu hai usato le regex di Perl...
Non ti far confondere dalla -P, quell'espressione vale nell'implementazione Perl, .NET, Javascript... L'unica differenza in questo caso è che senza -P devi fare l'escape dei caratteri speciali:
Codice:
# echo "ciccio" | grep '^\(\|1\)'
ciccio
Così ti torna?
__________________
Quello che davvero mi interessa è se Dio, quando creò il mondo, aveva scelta.
SnakePlissken è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2014, 19:12   #18
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da SnakePlissken Guarda i messaggi
Non ti far confondere dalla -P, quell'espressione vale nell'implementazione Perl, .NET, Javascript... L'unica differenza in questo caso è che senza -P devi fare l'escape dei caratteri speciali:
Codice:
# echo "ciccio" | grep '^\(\|1\)'
ciccio
Così ti torna?
sarà la stanchezza , ma mi sto confondendo :
io leggo ;greppa o stringa vuota o stringa che comincia con 1.Perchè mi stampa "ciccio"?
toni00t è offline   Rispondi citando il messaggio o parte di esso
Old 23-11-2014, 10:11   #19
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Perché non è corretto "greppa o stringa vuota o stringa che comincia con 1", ma tutte le stringhe che cominciano con una stringa vuota (e prima di qualunque stringa possiamo immaginare che ci sia una stringa vuota), e tutte quelle che cominciano con "1". La seconda condizione è inclusa nella prima, quindi l'espressione da riscontro per qualunque stringa.
Se invece l'espressione fosse stata '^(|1.*)$', oppure '^($|1)', sarebbe stata corretta la prima affermazione.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 23-11-2014, 15:17   #20
toni00t
Member
 
Iscritto dal: Aug 2012
Messaggi: 268
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Perché non è corretto "greppa o stringa vuota o stringa che comincia con 1", ma tutte le stringhe che cominciano con una stringa vuota (e prima di qualunque stringa possiamo immaginare che ci sia una stringa vuota), e tutte quelle che cominciano con "1". La seconda condizione è inclusa nella prima, quindi l'espressione da riscontro per qualunque stringa.
Se invece l'espressione fosse stata '^(|1.*)$', oppure '^($|1)', sarebbe stata corretta la prima affermazione.
scusa , ma quello è un or logico non un and !
dovrebbe essere

"tutte le stringhe che cominciano con una stringa vuota (e prima di qualunque stringa possiamo immaginare che ci sia una stringa vuota), o tutte quelle che cominciano con "1"."
toni00t è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Gwynne Shotwell (presidente di SpaceX): ...
ISRO lancerà il primo modulo della stazi...
Lo sfondo animato del tuo PC potrebbe es...
Dopo la RAM, Framework annuncia l'aument...
Google Home Speaker ufficiale: è il prim...
Spotify: i nomi utente stanno per divent...
Il limite vero dei data center AI sono g...
AMD conferma i nuovi Threadripper: Zen 6...
Stop all'ADSL per WindTre: continua la m...
HPE punta sull'IA agentica e dichiara gu...
macOS avvisa quando si incolla un comand...
Everpure ridisegna lo storage per l’IA: ...
NVIDIA RTX Remix 1.5: realizzare remaste...
Come configurare Windows 11 like a pro, ...
Windows 11 cambia finalmente la gestione...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v