Espressione regolare

Pubblicità

Fab996

Utente Attivo
Messaggi
177
Reazioni
5
Punteggio
38
Mi potreste suggerire un'espressione regolare per definire tutte le possibili stringhe di 'a' e 'b', anche vuota, tranne la singola a? Esempi { ,b,aaaa,bbb,abababab,bba,aaabbaba...}
 
Per come hai definito il problema infinite. :sisi:
Esiste per caso una dimensione massima fissata?
No, non esiste. Questa potrebbe andare bene? ""+((a+b)*a(a+b)*a(a+b*))+(a+b)*b(a+b)*

Dove con gli apici indico la stringa vuota e col più l'operazione di unione.
 
Non vorrei dire baggianate, ma così su due piedi ti direi:

Dove il - 2 non fa parte del termine della serie. Il termine della serie è dato solo da n!. Quel -2 elimina le due combinazioni 'a' e 'b'.
 

Allegati

  • 20181013_015206.webp
    20181013_015206.webp
    2.5 KB · Visualizzazioni: 73
Non vorrei dire baggianate, ma così su due piedi ti direi:

Dove il - 2 non fa parte del termine della serie. Il termine della serie è dato solo da n!. Quel -2 elimina le due combinazioni 'a' e 'b'.
Si, però io devo eliminare solamente la singola a. L'espressione che ti ho fornito come ti sembra?
 
Facciamo un attimo mente locale. Devi contare quante sono le stringhe composte da a e da b esclusa la stringa 'a'. Giusto? Se fosse così allora basterebbe cambiare il -2 con un -1.

Oppure devi creare le stringhe esclusa la 'a'?
 
Allora dovresti implementare quella sommatoria in codice. Anche se di fatto si limita a contare il numero di combinazioni risulta essere la base di partenza per quello che vuoi fare. Ovviamente ci deve essere necessariamente un limite superiore N, non puoi creare troppe stringhe. Considera che il fattoriale cresce molto velocemente già per N = 10 avresti circa 4 milioni di stringhe...
 
Scusate ragazzi ma non avete mai sentito parlare di “regular expression“

Per esempio questa espressione
^[a-b][a-b]*$
Rappresenta una stringa che contiene solo le due lettere ‘a’ e ‘b’ in qualsiasi combinazione.

https://en.m.wikipedia.org/wiki/Regular_expression
Con la tua regex indichi anche la singola a. Quella che ho scritto io ((a+b)*a(a+b)*a(a+b*))+(a+b)*b(a+b)* in espressione regolare Unix diventa ((a|b)*a(a|b)*a(a|b*))|((a|b)*b(a|b)*) che credo funzioni.
 
Pubblicità
Pubblicità
Indietro
Top