У меня есть несколько разделенных табуляцией фрагментов HTML в файле .tsv
. Вот пример одного из фрагментов:
<li>
<p>Create a list of letters, <code>lst</code> from the string <code>strng = "abc"</code>.</p>
<ul>
<li>Use the list constructor, <code>list()</code>, to create a list from a string.</li>
</ul>
<pre>
<code class='language-python' lang='python'>
strng = "abc"
lst = list(a)
#lst = ['a', 'b', 'c']
Я хотел бы заменить символы новой строки \n
на разрывы строк, <br>
, только между тегами <pre> <code class='language-python' lang='python'>
и
, используя регулярное выражение и re.sub()
.
Я попытался создать следующее регулярное выражение для соответствия желаемым переводам строки:
<code>(?<=<pre><code)\r\n?|\n(?<=
)
Однако приведенное выше регулярное выражение не соответствует никаким символам новой строки из фрагмента. Хотя, если я уберу положительный отстающий, то регулярное выражение соответствует соответствию нужным мне строкам (по крайней мере, для фрагмента, который я показал в этом посте, a; хотя это не будет верно для все входы).
(?<=<pre><code)\r\n?|\n
Может ли регулярное выражение, которое будет перехватывать все новые строки между тегами: <pre> <code class='language-python' lang='python'>
и
во всех возможных фрагментах?
РЕДАКТИРОВАТЬ : Эти фрагменты не используют "полный" HTML. Они на самом деле предназначены для экспорта в приложение флэш-карты mnemosyne . Каждый из этих фрагментов представляет одну карточку, которая всегда будет иметь одинаковую контролируемую структуру html (определено мной). Таким образом, использование регулярных выражений в этом случае не будет иметь никаких последствий. Кроме того, html рендер, используемый mnemosyne, не разрывает строки в тегах <pre>
, поэтому я пытаюсь сделать это вручную с помощью <br>
.