Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-06-2011, 13:03   #1
Xfree
Senior Member
 
L'Avatar di Xfree
 
Iscritto dal: Aug 2001
Messaggi: 9538
[Regex] Prendere una qualunque sequenza di caratteri compresa tra due delimitatori

Ciao a tutti.
Avrei bisogno di una mano per la creazione di una espressione regolare.
Ho una lista di stringhe tra cui devo riuscire a prendere una qualunque sequenza di caratteri compresa tra due caratteri delimitatori.
Il seguente codice mostra un esempio eterogeneo di quello che mi ritrovo.

Codice:
, 432/1 Sc. L -
, 67 -
, 350/2P. -
, 60/. -
, 56/2P Int. 4 -
, 17/2 P - 
, 66/P/T Int. 4 -
, 526/2 P -
, 24 Int. 1 -
Quello che vorrei fare è riuscire a prendere ciò che è compreso tra i due caratteri delimitatori virgola e trattino.
Il problema è che ciò che è compreso tra i due delimitatori è scritto in modo eterogeneo.
Io ci ho provato ma, probabilmente a causa della mia non approfondita conoscenza delle espressioni regolari, non ci sono riuscito.
Ho ovviato scrivendo tante espressioni regolari per i vari casi possibili che si sono sono presentati analizzando il file, ma ciò penso sia lungo e controproducente.
Questo è quanto ho fatto, ancora in fase di rifinitura.
Codice:
[,]\\s*(\\w+|\\w+[/]\\w+|\\w+[/]\\w+[.]\\w+|\\w+[/]\\w+[/]\\w+)*\\s[\\-]
Non fate caso ai \\ perché il motore di regex del programma che sto usando necessita questo accorgimento.
Quello che mi chiedo e che è alla fine la domanda del thread :
esiste un modo per prendere una qualunque sequenza di caratteri, compatibile con il set che mi ritrovo, compresa tra due delimitatori riuscendo a scrivere meno codice possibile?
Grazie anticipatamente a chi avrà la pazienza di leggere e sarà in grado di aiutarmi.
Xfree è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2011, 13:29   #2
SerMagnus
Senior Member
 
L'Avatar di SerMagnus
 
Iscritto dal: Sep 2005
Messaggi: 1400
se ti interessa solo il contenuto testuale potrebbe bastare anche la seguente regex (nn testata)

,(.*)-
SerMagnus è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2011, 13:41   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2795
Se ho capito bene forse andrebbe bene una cosa di questo tipo:
Codice:
(?<=,).*?(?=-)
Con (?<=,) matchi (permettimi il termine) la virgola ma non la catturi.
Con .*? selezioni qualunque carattere (grazie al punto), zero o più volte (grazie all'asterisco) e in modo lazy (grazie al ?).
Con (?=-) matchi il trattino ma non lo catturi.

Per lazy si intende che il match viene interrotto a favore dell'elemento successivo, in questo caso il trattino. Ad esempio
, asd - , lol -
in modo lazy catturi " asd ", in modo non lazy (o greedy) catturi " asd - , lol ".

Ho usato come riferimento questo sito e in particolare:
LINK
LINK

Ultima modifica di wingman87 : 30-06-2011 alle 15:07.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2011, 14:31   #4
Xfree
Senior Member
 
L'Avatar di Xfree
 
Iscritto dal: Aug 2001
Messaggi: 9538
Innanzitutto grazie ad entrambi per la risposta.
Subito dopo aver postato, sono andato a cercare delle informazioni ed avevo scritto per prova una regex così formata

Codice:
[?<=\\,](\\d+)[?=\\-]
senza però ottenere il risultato sperato.
Adesso provo con entrambi i suggerimenti.
Grazie ancora.
Xfree è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2011, 14:43   #5
Xfree
Senior Member
 
L'Avatar di Xfree
 
Iscritto dal: Aug 2001
Messaggi: 9538
Bene, di funzionare funzionano entrambe.
Ora devo capire il problema per cui non viene matchato alcun campo se aggiungo quell'espressione regolare al resto che ho già creato.
Almeno è un passo avanti e so per certo, grazie a voi, che quello funziona.
Grazie ancora per l'aiuto.
Xfree è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Xiaomi 18 Pro svela il suo asso nella ma...
NVIDIA: il Segretario al Tesoro USA chie...
OPPO porta in Europa un nuovo mid-range:...
Star Wars, Morrowind e TimeSplitters: la...
God of War: Sons of Sparta debutta su PS...
Dalle schede madri agli ospedali: ASUS p...
Perché Windows non permette di ch...
Il meglio in 7 articoli del Black Friday...
Black Friday Dyson: sconti fino al 43% s...
Cerebras cresce del 70% nel trimestre e ...
Black Friday Amazon, robot aspirapolvere...
22 milioni di persone coinvolte: il giga...
CPU desktop, Intel rialza la testa e AMD...
NVIDIA, una petizione chiede il ritorno ...
SpaceX Starship: Ship 42 è stata ...
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: 22:48.


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