Espressione regolare

Fab996

Utente Attivo
177
5
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...}
 

Fab996

Utente Attivo
177
5
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.
 

Sysken

Nuovo Utente
51
20
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.png
    20181013_015206.png
    9.8 KB · Visualizzazioni: 73
  • Mi piace
Reazioni: Fab996

Fab996

Utente Attivo
177
5
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?
 

Sysken

Nuovo Utente
51
20
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'?
 
  • Mi piace
Reazioni: Fab996

Sysken

Nuovo Utente
51
20
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...
 

Fab996

Utente Attivo
177
5
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.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili