Регулярное выражение Python работает на macOS, но не на Ubuntu

#python-3.x #regex #github-actions

#python-3.x #регулярное выражение #github-действия

Вопрос:

Я запускаю скрипт Python в действии GitHub, который выполняется на компьютере Ubuntu 18.04.

Скрипт разбивает файл Markdown на несколько файлов markdown на основе совпадающих заголовков первого уровня (т.Е. # Header {header-anchor} ), Поэтому я использую

 for match in re.finditer("^#s(.*?)($|{)", file_contents, flags=re.M)
 

чтобы получить местоположение каждого заголовка.

Все это отлично работает на моем локальном компьютере под управлением OSX 10.15.4 с Python 3.8.7. Регулярное выражение соответствует заголовкам и соответствующим образом разбивает файл.

Однако на компьютере Github Action Ubuntu (на котором я установил Python 3.8 в соответствии с https://github.com/actions/setup-python

 - name: Python Setup
  uses: actions/setup-python@v2
  with:
    python-version: '3.8'
 

Регулярное выражение не возвращает совпадений и не разделяет файл. Я не уверен, почему, поскольку я ожидаю re , что библиотека будет работать независимо от ОС.

Комментарии:

1. Обычно при регулярном выражении имеет значение, является ли одна ОС Windows, а другая Mac / * nix, поскольку в игру вступает разница в переносе строки. В вашем случае неясно, что происходит, и без воспроизводимого примера будет сложно помочь.

2. Вот пример файла markdown: github.com/aparande/BerkeleyNotes/blob/gitbook/ee128.md , а полный сценарий можно найти по адресу github.com/aparande/BerkeleyNotes/blob/gitbook/create_book.py . Достаточно ли этого, чтобы помочь воспроизвести его?

Ответ №1:

Оказывается, файл, который я анализировал на компьютере ubuntu, использовал другой вариант markdown, в котором не были указаны заголовки первого уровня # .