regex: строка с необязательными частями

Я пытаюсь разобрать несколько строк документа.

Пример docstrings:

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

Обе части Arguments и Returns являются необязательными. Я хочу, чтобы мой regex возвращал в качестве групп описание (первые строки), часть Arguments (если присутствует) и часть Returns (если присутствует).

Регекс, который у меня есть сейчас:

m = re.search('(.*)(Arguments:.*)(Returns:.*)', s, re.DOTALL)

работает в случае присутствия всех трех частей, но не работает, как только Arguments или Returnsчасти отсутствуют. Я пробовал несколько вариантов с нежадными модификаторами типа ???но безрезультатно.

Edit: Когда присутствуют части Arguments и Returns, я бы хотел, чтобы совпадал только текст после Arguments: и Returns: соответственно.

Спасибо!

8
задан BioGeek 26 January 2012 в 14:19
поделиться