在查找替换中调用 AI ,即用正则查找一个文本,调用 AI 处理该文本,然后替换或补充 AI 生成的输出到原文本,可以极大地扩展了传统查找替换的能力:
[positive]
, [negative]
或主题关键词)添加到原文旁边或替换特定占位符。下面学习一下如何在查找替换中调用 AI ?
唐库 AI 编辑器的查找替换可以调用 AI ,还可以预览替换: 1 )预览替换功能,可以在替换前先预览一下,尤其使用正则表达式替换时有必要,避免出错; 2 ) AI 替换功能,查找一个词条,用 AI 处理该词条,替换为 AI 处理的结果; 3 )词条转换功能(例如转大写,转小写)。
1 ,正则表达式分组概念
要使用 AI 替换功能,需先了解正则表达式分组概念,不要害怕正则,现在什么都可以问 AI 了。
先看最简单的:
想把 123abc
中的字母数字顺序掉转,操作如下:
查找 123abc
替换为 abc123
就可以了。
但看起来毫无意义,还不如打字快,再看如下操作:
查找 (123)(abc)
选中支持正则,替换为 $2$1
,发现真的替换为 abc123
了!
为什么呢?
小括号就是正则表达式的分组, (123)
是第 1 分组,在替换里用 $1 代表, (abc)
是第 2 分组,在替换里用 $2 代表,$2$1
自然就将顺序调转了。
但这样看好像意义也不大,只能调转123abc
啊?
再变形一下:查找 ([0-9]+)([a-z]+)
替换 $2$1
不变,这是什么含义呢?
[0-9]
:表示 0-9 中间的任意数字字符;
[a-z]
:表示 a-z 中间的任意字母字符;
+
:表示重复前面的字符 1-n 个
这个式子就强大了,它能将所有数字在前字母在后的字符串掉转。
2 ,AI 替换功能:
查找一个词条,用 AI 处理该词条,然后替换或补充 AI 处理的结果,AI 是无所不能的,这也意味着唐库的查找替换无所不能,而且是批量的。
还是从最简单说起:
文章中有一些英文名字,想在其后补充“(中文名字)”,例如John
,变为John(约翰)
,在唐库中如下操作:
查找:(?<ai>John)
Prompt:$ai_text,请翻译前面的词条为中文,人名地名参照最常见的中文翻译,请返回译文,不要加多余的话。
替换:$ai_text($ai_created)
执行替换之后,John
真的变为John(约翰)
解释如下:
命名分组:第 1 节说了正则表达式中小括号代表分组,(?<ai>...)
叫做命名分组,ai 就是这个分组的名字,分组有了名字就不用去数序号了。名字可以任取,字母数字均可以,例如可以是(?<xxx>...)
;
AI 命名分组:唐库规定,凡是名字前面有“ai"前缀的,叫做 AI 命名分组,需要调用 AI 处理该词条。通过 Prompt ,将该词条输入 AI ,Prompt 中的$ai_text
变量,代表名字叫做 ai 的分组的内容;
替换串:$ai_text
代表名字叫做 ai 的分组内容,$ai_created
代表 AI 生成的内容,注意:替换串中的括号就是括号,没有分组概念。
下面举个更复杂的例子: 你是一个数学老师,学生做了 100 道题,想让 AI 帮忙批改,举例 1 个题目如下:
问题:有大小形状相同的 3 个红色小球和 5 个白色小球,排成一排,共有多少种不同的排列方法? 答:因为是 8 个小球的全排列,所以共有 8!,共 40320 种排法。
用唐库的 AI 查找替换来解决如下:
查找:问题:(?<ai>.+)\n 答:(?<ai2>.+)
Prompt:$ai_text ] 是一个数学问题, [$ai2_text ] 是学生答案,请判断答案是否正确,如不正确简要给出正确解法。返回格式:正确/不正确,正确解法限定 100 字以内,不要加多余的话。
替换:问题:$ai_text\n 答:$ai2_text\n 批:$ai_created
执行替换之后获得结果如下( AI 选择默认的 Deepseek 即可):
问题:有大小形状相同的 3 个红色小球和 5 个白色小球,排成一排,共有多少种不同的排列方法? 答:因为是 8 个小球的全排列,所以共有 8!,共 40320 种排法。 批:不正确,正确解法是 8!/(3!5!)=56 种。
是不是很神奇? 100 个学生的 100 道题,批改瞬间完成。解释:
问题:(?<ai>.+)\n
:.
表示除了换行以外的任意字符,+
表示 1-多个重复,尽量多匹配,这个分组把”问题“后面换行之前的内容全匹配了;
\n
:换行符号;
答:(?<ai2>.+)
:这个分组把“答”字后面的内容全匹配了(直到遇到换行符)。
所以发挥你的聪明才智,唐库的查找替换能做任何事情。
3 ,词条转换功能
假设文章里有很多小写英文单词,每行一个:
查找:(?<toupper>.+)
替换:$1,$@1
预览替换:
预览替换,找到 7 处: 11 | 1 行 || shade 11 | 1 行 || shade,SHADE 11 | 3 行 || ruffle 11 | 3 行 || ruffle,RUFFLE
小写英文单词被转为大写,解释: toupper:唐库特殊命名,将分组内容转为大写; $@1:第 1 分组经过唐库处理后的内容
类似上面 toupper 这样的预定义名称唐库还有: 1 ) tolower 转小写功能 2 ) toupper 转大写功能 3 ) index 返回连续序号 12345 4 ) indexcn 返回连续序号一二三四五 5 ) len 返回捕获组匹配的字符的个数