Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Ricerca espressione regolare adeguata

    Il mio problema è il seguente:
    ho una stringa nella quale devo eliminare ogni occorrenza di uno stesso numero all'interno delle parentesi tonde..faccio esempi pratici per rendere l'idea:
    supponiamo che la stringa in questione sia la seguente
    codice:
    String s = "( 5 1 3 )( 5 5 )( 3 1 )( 1 1 )"
    vorrei trovare un'adeguata espressione regolare che dandola in pasto a questo codice
    codice:
    String s1 = s.replaceAll (regex , "");
    mi dia
    codice:
    s1 = "( 5 1 3 )( 3 1 )"
    Sottolineo inoltre che dopo la tonda aperta , tra un numero e l'altro e prima della tonda chiusa c'è sempre uno spazio.

    Non sto chiedendo che mi forniate la regex bella e pronta (anche perchè andrei contro il regolamento) ma mi aiutate almeno nel formularla?

    Grazie!

  2. #2
    Sono ammessi numeri di più cifre? In un caso come:
    codice:
    ( 5 1 1 )( 1 5 1 )
    cosa dovrebbe restituire?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Direi di no , il contesto è quello delle permutazioni nella loro struttura in cicli disgiunti quindi questi casi non capiteranno mai

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Originariamente inviato da MItaly
    Sono ammessi numeri di più cifre? In un caso come:
    codice:
    ( 5 1 1 )( 1 5 1 )
    cosa dovrebbe restituire?
    No cioè aspetta , forse per l'orario stanotte ho risposto un po' alla cavolo..
    Certo che ci possono essere numeri di più cifre , tipo 10 , 11 ecc ma ovviamente non capiterà che uno stesso numero venga ripetuto più volte (notate la distinzione tra numero e cifra) , cioè non capiterà una cosa del genere:
    codice:
    ( 5 1 )( 4 1 3 )
    cioè che come sopra , ad esempio , l'1 capiti in più parti..ma certo che ci posso essere numeri a più di una cifra (dipende dalla lunghezza e da come è definita la permutazione)..può capitare ad esempio:
    codice:
    ( 11 5)(1 3 2)
    vi ricordo , ancora una volta che ci sono gli spazi a dividere i numeri (non dividono le cifre) , così come a dividere le tonde dai numeri (non ci sono spazi tra chiusa tonda e aperta tonda)

    Spero di essermi spiegato.

    Comunque , giusto per la cronaca , nel frattempo ho raggirato il problema della espressione regolare con la seguente procedura:
    per ogni permutazione so che i numeri che vi compaiono appartengono a un determinato intervallo [a , b] quindi mi è bastato fare
    codice:
    for (int i=a;i<=b;i++) {
    s = s.replaceAll ("( " + i + " " + i + " )" , "");
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.