Anki多形式目标词汇加粗脚本修改求助(无编程基础)
解决Anki中多形式词汇在句子中自动加粗的问题
你的脚本当前只能匹配单一词汇字符串,当Word字段是das Kino · Kinos · Kinos这种多形式分隔的内容时,正则会把整个字符串当成匹配目标,自然找不到句子里的单一Kino或Kinos。下面是修改后的脚本,直接替换原来的代码即可:
<div id="word" hidden>{{Word}}</div> <div id="sentence">{{Sentence}}</div> <script> (() => { // 获取词汇内容,按" · "分割成多个形式 const rawWords = document.getElementById("word").innerText.trim(); const wordList = rawWords.split(" · ").map(word => word.trim()); // 对每个词汇做正则转义,避免特殊字符干扰匹配 const escapedWords = wordList.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); // 拼成正则表达式:匹配任意一个词汇,全局+大小写不敏感 const regex = new RegExp(`(${escapedWords.join('|')})`, 'gi'); const sentenceEl = document.getElementById("sentence"); // 替换时用匹配到的原内容,保证不同形式的词汇各自加粗 sentenceEl.innerHTML = sentenceEl.innerHTML.replace(regex, `<b><i><span style=' '>$1</span></b></i>`); })(); </script>
使用说明:
- 保持Word字段的多形式用
·(空格+点+空格)分隔,比如das Kino · Kinos - 脚本会自动识别所有分隔后的词汇形式,在句子里找到对应的内容并加粗
- 支持大小写不敏感匹配,比如句子里的
kino也会被匹配到
关键修改点:
- 把多形式词汇拆分成独立的列表,而非当成一个整体匹配
- 对每个词汇做正则转义,避免像
.或()这类特殊字符破坏匹配规则 - 用
$1引用匹配到的原内容,保证替换后和句子里的形式一致(不会把Kinos替换成Kino)
内容的提问来源于stack exchange,提问作者fouda4ever
相关产品推荐
相关产品推荐

