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

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

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

<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 для достижения этого результата с помощью регулярного выражения? Какое правильное регулярное выражение для достижения этого результата?

2 ответа

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

Давайте посмотрим на пару испытаний с окном "Найти и заменить". Я использую следующие настройки.
Наблюдение 1
Вход: <
Найти: <
Заменить:
Выход: <

Резюме: ничего не произошло Шаблон действителен, но он не сработал, как ожидалось.

Наблюдение 2
Вход: <
Найти: ^.
Заменить:
Выход: л;

Резюме: 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>

Столбец 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>

Поля столбца:
<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.

Давайте попробуем это регулярное выражение:


До изменения:


После изменения:


Сам шаблон может быть сокращен, но здесь я сосредоточился в основном на том, как заставить его работать вообще.

Я думал, что просто wlod, чтобы сказать, что wlod правильный.

Вы можете создать группу захвата, окружив любой соответствующий шаблон регулярных выражений, который вы хотели бы сохранить во время замены, заключив его в скобки и используя соглашение \<digit> упорядочено по количеству ( захваченный ) группы вы указали.

Это убило меня тоже, прежде чем я узнал об этом, потому что во многих реализациях регулярных выражений, $ используется для обозначения группы захвата, но в Анки \ используется.


Пример № 1

У вас есть различные предложения животных в поле на заметках Anki. Вы хотите сохранить животное и нормализовать предложения для всех них.

# Card 1
Your dog is friendly.

# Card 2
That cat is evil.

# Card 3
My fish is dead.

Найти:

.*(dog|cat|fish).*

Заменить:

I love my \1.

Результат:

# Card 1
I love my dog.

# Card 2
I love my cat.

# Card 3
I love my fish.

Пример № 2

Теперь предположим, что вы также хотели сохранить их прилагательные. Вам понадобятся две группы захвата. Один для животного и один для прилагательного.

Вы могли бы сделать это.

# Card 1
Your dog is friendly.

# Card 2
That cat is evil.

# Card 3
My fish is dead.

Найти:

.*(dog|cat|fish) is (.+)\.

Заменить:

The \2 \1

Результат:

# Card 1
The friendly dog

# Card 2
The evil cat

# Card 3
The dead fish

Я надеюсь, что это помогает прояснить ситуацию.

Другие вопросы по тегам