|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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 |
|
|
|
|
#2 |
|
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".
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
|
Quote:
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 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
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.
|
|
|
|
|
#5 |
|
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. |
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ciao, questa ti prende solo i numeri compresi fra le graffe
Codice:
(?<={)\d+(?=})
Codice:
(?<=\{)\d+(?=\})
Ultima modifica di MEMon : 27-07-2010 alle 00:58. |
|
|
|
|
#8 | ||
|
Member
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
|
Quote:
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:
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal repetition near index 3 (?<={)d+(?=})
__________________
iPhone4, MacBook |
||
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
dovrebbe bastarti fare split("[{]|[}]"); ed utilizzare l' elemento in posizione 1 del vettore.
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Codice:
(?<={)\\d+(?=})
Ultima modifica di MEMon : 26-07-2010 alle 23:41. |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Perchè se il suo scopo ultimo è solo quello di prendere il numero all'interno delle graffe vi sono innumerevoli metodi |
|
|
|
|
|
#12 | |||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
String.split("[{}]"); Quote:
Quote:
no, questa riconosce le stringhe contenenti numeri compresi tra graffe. |
|||
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
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. |
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
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. |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
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. |
|
|
|
|
|
#16 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
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"? |
||
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Probabilmente non conosci molto bene questo strumento... |
|
|
|
|
|
#18 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
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:
Quote:
|
||
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
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. |
|
|
|
|
|
#20 | ||
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Quote:
Ultima modifica di MEMon : 27-07-2010 alle 00:25. |
||
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:35.



















