Estoy intentando analizar algunas cadenas de documentos.regex: cadena con partes opcionales
un ejemplo docstrings es:
Test if a column field is larger than a given value
This function can also be called as an operator using the '>' syntax
Arguments:
- DbColumn self
- string or float value: the value to compare to
in case of string: lexicographic comparison
in case of float: numeric comparison
Returns:
DbWhere object
Tanto los Arguments
y Returns
partes son opcionales. Quiero que mi expresión regular devuelva como grupos la descripción (primeras líneas), la parte Arguments
(si está presente) y la parte Returns
(si está presente).
La expresión regular que tengo ahora es:
m = re.search('(.*)(Arguments:.*)(Returns:.*)', s, re.DOTALL)
y trabaja en el caso de las tres partes están presentes pero no tan pronto como Arguments
o los Returns
partes no están disponibles. He intentado varias variaciones con los modificadores no codiciosos como ??
, pero fue en vano.
Editar: Cuando los Arguments
y Returns
partes están presentes, de hecho me habría sólo me gusta para que coincida con el texto después de Arguments:
y Returns:
respectivamente.
Gracias!
¿El orden siempre es el correcto? I. e., ¿'Arguments' siempre después del texto estándar y antes de' Returns'? –
Sí, el orden siempre es fijo. – BioGeek