многострочное регулярное выражение yaml

Я хотел бы написать хук pygrep с pre-commit, который находит случаи, например.

    .. warning:

(когда должно быть .. warning::).

если я напишу

-   repo: local
    -   id: incorrect-sphinx-directives
        name: Check for incorrect Sphinx directives
        language: pygrep
        entry: \.\. (autosummary|contents|currentmodule|deprecated|function|image|important|include|ipython|literalinclude|math|module|note|raw|seealso|toctree|versionadded|versionchanged|warning):[^:]
        files: \.(py|pyx|rst)$

тогда это работает, однако строка нечитаемо длинная. Есть ли способ разбить его на несколько строк?

Я старался

        entry: "\
            .. (autosummary|contents|currentmodule|deprecated\
            |function|image|important|include|ipython\
            |literalinclude|math|module|note|raw|seealso\
            |toctree|versionadded|versionchanged|warning\
            ):[^:]"

но это не работает (результирующее регулярное выражение отличается).

Какие-либо предложения?


person ignoring_gravity    schedule 20.10.2020    source источник
comment
Я не использую регулярное выражение для изменения yaml, не уверен, что вы имеете в виду.   -  person ignoring_gravity    schedule 20.10.2020


Ответы (2)


Как задокументировано, вы можете использовать подробное выражение:

        entry: |
            (?x)^(
                thing|
                other_thing|
                other_other_thing
            )$
person Anthony Sottile    schedule 20.10.2020
comment
Возможно, стоит упомянуть, что на самом деле делает | . Использование > также может быть целесообразным. - person DaSourcerer; 20.10.2020
comment
@DaSourcerer это не имеет значения для подробных регулярных выражений Python, которые игнорируют внешние пробелы - person Anthony Sottile; 20.10.2020
comment
Истинный. Это все еще особенность YAML, которую полезно знать, ИМХО. - person DaSourcerer; 20.10.2020
comment
конечно, но это не имеет значения для этого Q&A - person Anthony Sottile; 20.10.2020

Решение было сделать

        entry: "\
            \\.\\. (autosummary|contents|currentmodule|deprecated\
            |function|image|important|include|ipython\
            |literalinclude|math|module|note|raw|seealso\
            |toctree|versionadded|versionchanged|warning\
            ):[^:]"
person ignoring_gravity    schedule 20.10.2020