Как сделать регулярное выражение найти замену в анки?

616
acman123

Мне нужно найти и заменить все карточки, используя следующие настройки:

В качестве примера я хочу найти:

<span style="color: rgb(255, 255, 255)">Word</span> 

и изменить его на

Word 

Другими словами, я хочу раздеть этот текст Word.

но проблема в том, что у меня есть и другие слова.

<span style="color: rgb(255, 255, 255)">One</span> <span style="color: rgb(255, 255, 255)">Two</span> <span style="color: rgb(255, 255, 255)">Three</span> 

в

One Two Three 

Я хочу изменить их все на слово между этими тегами. Как я могу использовать поиск и замену Anki для достижения этого результата с помощью регулярного выражения? Какое правильное регулярное выражение для достижения этого результата?

enter image description here

0
Что вы пробовали? Я читал, что Anki использует Python-выражение для регулярных выражений, поэтому оно должно быть довольно простым. В онлайн-руководстве Anki есть даже пример, который довольно близок к тому, что вы хотите. Потребовалось меньше минуты, чтобы найти. Ron Rosenfeld 5 лет назад 0
Пожалуйста, просто предоставьте образец, который работает acman123 5 лет назад 0

1 ответ на вопрос

0
wlod

Кажется, что ответ прост, но когда в 'Найти и заменить' применяется действительное регулярное выражение, оно просто не работает.
Документация https://apps.ankiweb.net/docs/manual.html#find-and-replace вообще не полезна и даже вводит в заблуждение, поскольку показывает пример, который не работает при применении.
Я могу только предположить, что это работало в некоторых из предыдущих версий, но было непреднамеренно сломано.

Давайте посмотрим на пару испытаний с окном «Найти и заменить». Я использую следующие настройки. Наблюдение 1 Вход: < Поиск: < Заменить на: Выход: < Резюме: Ничего не произошло. Шаблон действителен, но он не сработал, как ожидалось. Наблюдение 2 Вход: <enter image description here










Найти: ^.
Заменить на:
Выход: lt;

Резюме: lt; Напоминает сущность html &lt;Теперь мы знаем, что движок регулярных выражений работает, но, очевидно, символы хранятся не так, как выглядят.

Anki хранит коллекции в файле collection.anki2, который является файлом базы данных sqlite. Давайте откроем его в браузере БД для SQLite и найдем запись с:
<span style="color: rgb(255, 255, 255)">One</span>
<span style="color: rgb(255, 255, 255)">Two</span>
<span style="color: rgb(255, 255, 255)">Three</span>

enter image description here

Столбец sfld:
<span style="color: rgb(255, 255, 255)">One<span><span style="color: rgb(255, 255, 255)">Two<span><span style="color: rgb(255, 255, 255)">Three<span>

Столбец flds:
<div>&lt;span style="color: rgb(255, 255, 255)"&gt;One&lt;span&gt;</div><div>&lt;span style="color: rgb(255, 255, 255)"&gt;Two&lt;span&gt;</div><div>&lt;span style="color: rgb(255, 255, 255)"&gt;Three&lt;span&gt;</div><div>&lt;span style="color: rgb(255, 255, 255)"&gt;One&lt;span&gt;</div><div>&lt;span style="color: rgb(255, 255, 255)"&gt;Two&lt;span&gt;</div><div>&lt;span style="color: rgb(255, 255, 255)"&gt;Three&lt;span&gt;</div>

очевидно, регулярное выражение работает в столбце flds.

Давайте попробуем это регулярное выражение: До изменения: После изменения: сам шаблон можно сократить, но здесь я в основном сосредоточился на том, как заставить его работать вообще.
enter image description here


enter image description here


enter image description here

Не могли бы вы вставить те регулярные выражения, которые вы использовали здесь в качестве копируемого текста? acman123 5 лет назад 0
Любой из них должен работать: (1) `<span style = \" color: rgb \ (255, 255, 255 \) \ "> (. *?) </ Span>` (2) `<span. *? \> (. *?) </ span> `(3)` (? <=
) <SPAN. *? \> (. *?) </ SPAN> (? =
) `Помните, чтобы поставить \ 1 в Заменить на. wlod 5 лет назад 0

Похожие вопросы