I am trying to parse some docstrings.
An example docstrings is:
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
Both the Arguments
and Returns
parts are optional. I want my regex to return as groups the description (first lines), the Arguments
part (if present) and the Returns
part (if present).
The regex I have now is:
m = re.search('(.*)(Arguments:.*)(Returns:.*)', s, re.DOTALL)
and works in case all three parts are present but fails as soon as Arguments
or the Returns
parts are not available. I have tried several variations with the non-greedy modifiers like ??
but to no avail.
Edit: When the Arguments
and Returns
parts are present, I actually would only like to match the text after Arguments:
and Returns:
respectively.
Thanks!