Estoy tratando de capturar una línea de cadena que puede tener o no una coma (: solo se dará 0 o 1 coma). Entonces, los datos serán algo así como a continuación y la ejecución de expresiones regulares ocurrirá línea por línea. pastel,...

1
PuffedRiceCrackers 15 mar. 2021 a las 06:58

1 respuesta

La mejor respuesta

Utilice ([^,]*)(?:,(.*))?:

  • ([^,]*) coincide con cero o más "sin coma" y lo captura
  • (?:,(.*))? opcionalmente, haga coincidir una coma y capture todo lo que sigue.

Nota: (?:) es un grupo que no captura.

Demo de Python:

import re

lines = ['cake,strawberry',
         'shortbread',
         'english-muffin,blueberry']

for line in lines:
    print(re.match('([^,]*)(?:,(.*))?',line).groups())
('cake', 'strawberry')
('shortbread', None)
('english-muffin', 'blueberry')
1
Mark Tolonen 15 mar. 2021 a las 04:07