Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 26-07-2010, 20:06   #1
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
[Java] espressione regolare

vorrei tagliare il testo di un stringa che è racchiuso tra parentesi graffe, esempio:
abc de fg {456} hil 568 abc
deve diventare:
456

Ho letto e riletto varie guide ma non ci sono riuscito,
queste espressioni regolari non le ho capite.

Qualcuno mi saprebbe dare l'espressione regolare che mi serve?
__________________
iPhone4, MacBook
DNAx86 è offline  
Old 26-07-2010, 20:28   #2
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
le espressioni regolari non servono a modificare una stringa di input, servono solo a riconoscere. se tu dai una stringa in pasto ad un'espressione regolare quella ti risponde solo "si" o "no", non ti puó rispondere "456".
fero86 è offline  
Old 26-07-2010, 20:58   #3
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Quote:
Originariamente inviato da fero86 Guarda i messaggi
le espressioni regolari non servono a modificare una stringa di input, servono solo a riconoscere. se tu dai una stringa in pasto ad un'espressione regolare quella ti risponde solo "si" o "no", non ti puó rispondere "456".
intendevo dire che mi srve un espressione regolare da usare come delimitatore con una funzione apposita che uso per sezionare la stringa,
es:String.split(), StringTokenizer, etc etc...

so che si può fare, lo già fatto.
Vorrei sapere quel'è l'espressione regolare che fà a caso mio, dato che non ciriesco da solo
__________________
iPhone4, MacBook
DNAx86 è offline  
Old 26-07-2010, 21:08   #4
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da fero86 Guarda i messaggi
le espressioni regolari non servono a modificare una stringa di input, servono solo a riconoscere. se tu dai una stringa in pasto ad un'espressione regolare quella ti risponde solo "si" o "no", non ti puó rispondere "456".
In realtà formalmente le espressioni regolari descrivono linguaggi regolari. Ovviamente vengono utilizzate per la ricerca all' interno di stringhe, ma passandole come argomento ad alcuni metodi della classe String di Java è possibile operare alcune operazioni , come il substring o la sostituzione di caratteri.
nuovoUtente86 è offline  
Old 26-07-2010, 21:27   #5
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
C'è qualche programmatore java che conosce la giusta stringa (espressione regolare) da usare come delimitatore con StringTokenizer o String.split() nel caso sopra-citato?

Link: http://download.oracle.com/docs/cd/E...Tokenizer.html
__________________
iPhone4, MacBook

Ultima modifica di DNAx86 : 26-07-2010 alle 21:30.
DNAx86 è offline  
Old 26-07-2010, 21:44   #6
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
vorrei tagliare il testo di un stringa che è racchiuso tra parentesi graffe, esempio:
abc de fg {456} hil 568 abc
deve diventare:
456

Ho letto e riletto varie guide ma non ci sono riuscito,
queste espressioni regolari non le ho capite.

Qualcuno mi saprebbe dare l'espressione regolare che mi serve?
prima e dopo le graffe come possono variare le stringhe?
nuovoUtente86 è offline  
Old 26-07-2010, 21:52   #7
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ciao, questa ti prende solo i numeri compresi fra le graffe
Codice:
(?<={)\d+(?=})
edit: l'errore era che andava fatto l'escape anche delle graffe così
Codice:
(?<=\{)\d+(?=\})

Ultima modifica di MEMon : 27-07-2010 alle 00:58.
MEMon è offline  
Old 26-07-2010, 22:50   #8
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
prima e dopo le graffe come possono variare le stringhe?
Stringhe tipo:
javax.swing.event.ListSelectionEvent[ source=javax.swing.DefaultListSelectionModel 1491344323 ={2} firstIndex= 2 lastIndex= 2 isAdjusting= false ]

A me interessa estrarre i numeri (anche a più cifre) tra {}, in questo caso {2} => 2



Quote:
Originariamente inviato da MEMon Guarda i messaggi
Ciao, questa ti prende solo i numeri compresi fra le graffe
Codice:
(?<={)\d+(?=})
ottengo questo errore:
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal repetition near index 3
(?<={)d+(?=})
__________________
iPhone4, MacBook
DNAx86 è offline  
Old 26-07-2010, 23:15   #9
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
dovrebbe bastarti fare split("[{]|[}]"); ed utilizzare l' elemento in posizione 1 del vettore.
nuovoUtente86 è offline  
Old 26-07-2010, 23:38   #10
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
Stringhe tipo:
javax.swing.event.ListSelectionEvent[ source=javax.swing.DefaultListSelectionModel 1491344323 ={2} firstIndex= 2 lastIndex= 2 isAdjusting= false ]

A me interessa estrarre i numeri (anche a più cifre) tra {}, in questo caso {2} => 2





ottengo questo errore:
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal repetition near index 3
(?<={)d+(?=})
mmm strano che ottieni errore, hai messo due \\ prima del d visto che lo scrivi in una stringa?
Codice:
(?<={)\\d+(?=})

Ultima modifica di MEMon : 26-07-2010 alle 23:41.
MEMon è offline  
Old 26-07-2010, 23:41   #11
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
dovrebbe bastarti fare split("[{]|[}]"); ed utilizzare l' elemento in posizione 1 del vettore.
Da quel che ho capito, lui vorrebbe usare la regex che sta chiedendo come splitter per uno split.
Perchè se il suo scopo ultimo è solo quello di prendere il numero all'interno delle graffe vi sono innumerevoli metodi
MEMon è offline  
Old 26-07-2010, 23:42   #12
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
intendevo dire che mi srve un espressione regolare da usare come delimitatore con una funzione apposita che uso per sezionare la stringa,
es:String.split(), StringTokenizer, etc etc...
allora usa le graffe come delimitatori, no? ad esempio chiama:

String.split("[{}]");



Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
In realtà formalmente le espressioni regolari descrivono linguaggi regolari.
come tu saprai i linguaggi regolari sono riconoscibili, infatti un motore di espressioni regolari dovrebbe essere in grado di "riconoscere" una stringa, cioé dire se fa parte o no del linguaggio regolare descritto da una certa espressione regolare.



Quote:
Ovviamente vengono utilizzate per la ricerca all' interno di stringhe, ma passandole come argomento ad alcuni metodi della classe String di Java è possibile operare alcune operazioni , come il substring o la sostituzione di caratteri.
il metodo String.substring non prende espressioni regolari. ad ogni modo non vedo cosa c'entri con ció la frase che ho precedentemente quotato.



Quote:
Originariamente inviato da MEMon Guarda i messaggi
Ciao, questa ti prende solo i numeri compresi fra le graffe
Codice:
(?<={)\d+(?=})
no, questa riconosce le stringhe contenenti numeri compresi tra graffe.
fero86 è offline  
Old 26-07-2010, 23:43   #13
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da fero86 Guarda i messaggi
no, questa riconosce le stringhe contenenti numeri compresi tra graffe.
No, quello fa quello che stato chiesto. Cattura i numeri SOLO se se la stringa è di questo tipo xxx{numeri}xxxx

Ultima modifica di MEMon : 26-07-2010 alle 23:45.
MEMon è offline  
Old 26-07-2010, 23:48   #14
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da MEMon Guarda i messaggi
No, quello fa quello che stato chiesto. Cattura i numeri SOLO se se la stringa è di questo tipo xxx{numeri}xxxx
ripeto, un'espressione regolare di per se' puó rispondere solo si o no, vero o falso, appartiene o non appartiene.

che poi vengano usate in algoritmi piu complessi per cercare prefissi, suffissi e sottostringhe é un altro discorso, ma in questo caso dovresti specificare in che modo va usata quell'espressione regolare, cioé a quale metodo va passata e di quale classe.
fero86 è offline  
Old 26-07-2010, 23:51   #15
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da fero86 Guarda i messaggi
ripeto, un'espressione regolare di per se' puó rispondere solo si o no, vero o falso, appartiene o non appartiene.

che poi vengano usate in algoritmi piu complessi per cercare prefissi, suffissi e sottostringhe é un altro discorso, ma in questo caso dovresti specificare in che modo va usata quell'espressione regolare, cioé a quale metodo va passata e di quale classe.
Va usata nello split come richiesto dal thread starter no?

Il fatto che una regex ti dice solo se c'è il match o no è ovvio, non c'è nemmeno bisogno di dirlo, ma ovviamente una regex si può usare per fare praticamente qualsiasi cosa nella manipolazione del testo.
MEMon è offline  
Old 26-07-2010, 23:52   #16
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
dovrebbe bastarti fare split("[{]|[}]"); ed utilizzare l' elemento in posizione 1 del vettore.
Quote:
Originariamente inviato da fero86 Guarda i messaggi
allora usa le graffe come delimitatori, no? ad esempio chiama:

String.split("[{}]");
riflettendoci meglio peró soluzioni di questo genere possono fornire un risultato errato, come in questo caso:

123}456{789}876

l'output desiderato sarebbe "789" mentre invece si otterrebbe "456". inoltre, per come é stato posto il problema, non é chiaro quale output si vorrebbe ottenere in un caso come questo:

123{456{789}876

si dovrebbe ottenere "456{789" oppure "789"?
fero86 è offline  
Old 26-07-2010, 23:53   #17
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da fero86 Guarda i messaggi
le espressioni regolari non servono a modificare una stringa di input, servono solo a riconoscere. se tu dai una stringa in pasto ad un'espressione regolare quella ti risponde solo "si" o "no", non ti puó rispondere "456".
Questo assolutamente non è vero, l'applicazione principe di uan regexp e fare un match su una stringa, ovvero catturare solo quel che si vuole da una stringa, quindi una regexp può tornaryi solo 456 eccome.
Probabilmente non conosci molto bene questo strumento...
MEMon è offline  
Old 26-07-2010, 23:57   #18
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Va usata nello split come richiesto dal thread starter no?
ma cosi non si ottiene una stringa, si ottiene un array di stringhe: quale elemento dovrei prendere per avere l'output finale?
ad ogni modo sarei curioso di provarla ma non funziona.



Quote:
Il fatto che una regex ti dice solo se c'è il match o no è ovvio, non c'è nemmeno bisogno di dirlo,
per te magari, anche se non l'avrei detto.



Quote:
ma ovviamente una regex si può usare per fare praticamente qualsiasi cosa nella manipolazione del testo.
molte operazioni invece possono essere risolte senza farne uso.
fero86 è offline  
Old 27-07-2010, 00:02   #19
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Questo assolutamente non è vero, l'applicazione principe di uan regexp e fare un match su una stringa, ovvero catturare solo quel che si vuole da una stringa, quindi una regexp può tornaryi solo 456 eccome.
Probabilmente non conosci molto bene questo strumento...
come detto precedentemente nella discussione, un'espressione regolare non fa altro che descrivere un linguaggio riconoscibile, cioé un linguaggio a cui é possibile dire se una stringa appartiene o meno. punto.

l'operazione di matching di una stringa data una certa espressione regolare consiste semplicemente nel dire se quella stringa appartiene o meno al linguaggio regolare descritto dall'espressione; é un'operazione che restituisce solo vero o falso, non restituisce nessuna stringa. guarda il prototipo del metodo String.matches: prende un'espressione regolare e restituisce un booleano.
fero86 è offline  
Old 27-07-2010, 00:03   #20
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da fero86 Guarda i messaggi
ma cosi non si ottiene una stringa, si ottiene un array di stringhe: quale elemento dovrei prendere per avere l'output finale?
ad ogni modo sarei curioso di provarla ma non funziona.
DNAx86 chiedeva una regexp da usare come split per dividire una stringa, (probabilmente ha una stringa xxxxx{456}xxxx e vuyole spezzarla che ne so) quindi quella regexp va usata in uno split e non ti da i numeri all'interno delle graffe ovviamente visto che non è quello richiesto, anche se ovviamente facendo un match te li da.

Quote:
per te magari, anche se non l'avrei detto.

molte operazioni invece possono essere risolte senza farne uso.
Si capisce che non conosci assolutamente le espressioni regolari

Ultima modifica di MEMon : 27-07-2010 alle 00:25.
MEMon è offline  
 Discussione Chiusa


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Oracle NetSuite si potenzia con nuove fu...
Musica generata con l'IA: Sony lavora a ...
Cyberpunk 2077 in versione PC su smartph...
BYD si gioca un grosso jolly: pronta Rac...
Samsung annuncia l'arrivo in Italia dei ...
Offerta lancio Pixel 10a: come ottenere ...
Google presenta Pixel 10a: poche le novi...
Caos F1 2026: 14 monoposto senza omologa...
Tesla festeggia il primo Cybercab prodot...
Desktop piccolo e potente? NZXT H2 Flow ...
Polestar spinge sull'acceleratore: arriv...
Nuovo record mondiale nel fotovoltaico: ...
L'ultimo baluardo cade: fine supporto pe...
'Il mondo non ha mai visto nulla di simi...
La Commissione europea mette sotto indag...
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: 07:34.


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