Voglio una regex python per catturare sia una staffa o una stringa vuota. Provare il solito approccio non funziona. Ho bisogno di scappare da qualche parte ma ho provato tutto quello che so.Come faccio a corrispondere a zero o più staffe in pitone regex
one = "this is the first string [with brackets]"
two = "this is the second string without brackets"
# This captures the bracket on the first but throws
# an exception on the second because no group(1) was captured
re.search('(\[)', one).group(1)
re.search('(\[)', two).group(1)
# Adding a "?" for match zero or one occurrence ends up capturing an
# empty string on both
re.search('(\[?)', one).group(1)
re.search('(\[?)', two).group(1)
# Also tried this but same behavior
re.search('([[])', one).group(1)
re.search('([[])', two).group(1)
# This one replicates the first solution's behavior
re.search("(\[+?)", one).group(1) # captures the bracket
re.search("(\[+?)", two).group(1) # throws exception
è l'unica soluzione per me, per controllare che la ricerca ha restituito Nessuno?
I' D dì che non hai bisogno del gruppo che cattura. Basta vedere se '\ [' corrisponde o meno. Quale dovrebbe essere lo scopo del gruppo di cattura comunque se l'unica cosa che può eguagliare è una singola [. – donfuxx
Non sei sicuro di quale sia il problema. Vuoi abbinare una parentesi o una stringa vuota. Il secondo input contiene una stringa vuota tra ogni carattere, quindi corrisponde alla stringa vuota. – Barmar
In, elementi opzionali generali in un'espressione regolare hanno senso solo se sono prima o dopo qualche altra cosa che si desidera abbinare. Cercarlo da solo non ha senso - se è opzionale, l'input corrisponderà se lo contiene o no. – Barmar