唐库的查找替换具有以下特殊功能:
1)用户自定义词表替换功能,把多个词替换成为另外的词;
2)AI替换功能,查找一个词条,用AI处理该词条,替换为AI处理的结果;
3)信息提取统计功能,支持关键词提取,统计;
4)预览替换功能,在替换前先预览一下,避免出错;
5)可以无限扩充的词条转换功能(例如转大写,转小写)。
1 用户自定义词表替换功能:
用户有一个自定义替换词表:
aaa,bbb
ccc,ddd
意思是 aaa 要替换为 bbb, ccc 要替换为 ddd, 如何操作呢?
查找目标 (?<userlist>) 的含义是:
这是一个正则表达式,括号组表示分组,“?<userlist>”定义了userlist是分组名,userlist是预定义分组名,有特殊含义,就是查找用户自定义词表中的词。
替换目标 $1 表示第一个分组(小括号组)匹配的内容($0表示整个查找串),如果该分组是userlist, 则是用户自定义词表中的逗号前的词,$@1表示第一个分组经过运算后的结果,如果该分组是userlist则是用户自定义词表中的逗号后的词。
从“预览替换”可看到,$1的内容是“aaa”, $@1的内容是“bbb”。
更加常用的用法是查找 \b(?<userlist>)\b
\b 的含义匹配单词边界,例如空格或标点符号,不加\b像 “1aaa1” 会替换为 ”1bbb1”,加了\b后只有单独的 “aaa” 替换为 ”bbb” 了。
2 AI替换功能:
AI替换功能可以用于英文文章的人名地名的翻译,找到这些名称,然后用AI翻译,将翻译结果替换原名。这功能必须借助正则表达式的分组,下面举例说明一下:
解释:
查找目标 (?<ai>[A-Z][a-z]+) 的含义是:
1) 括号表示正则表达式分组;
2) (?<ai>…)表示该分组名称为“ai”, 该名称为预定义名称有特殊含义,会调用AI查询该分组匹配的词条;
3) [A-Z] 表示A-Z之间任意大写字符;
4) [a-z]+ 表示a-z之间任意小写字符,数量为1到多个;
替换目标 $1 = $@1 的含义是:
$1 代表第一个小括号中的字符串($0 代表整个字符串)
$@1 代表第一个小括号中匹配的字符串经过运算后的结果
从“预览替换”可看到,$1的内容是“John”, $@1的内容是“约翰”,这是AI翻译的结果。
例子2:
解释:
查找目标 (?<ai>[0-9()+-*\/]+) 的含义是:
1) 括号表示正则表达式分组;
2) (?<ai>…)表示该分组名称为“ai”, 该名称为预定义名称有特殊含义,会调用AI查询该分组匹配的词条;
3) [0-9()+-*\/]+表示由0-9字符和小括号以及 + - * / 构成的式子;
替换目标 $1 = $@1 的含义是:
$1 代表第一个小括号中的字符串($0 代表整个字符串)
$@1 代表第一个小括号中匹配的字符串经过运算后的结果
从“预览替换”可看到,$1的内容是“1+(2+3)*2”, $@1的内容是“11”,这是AI计算的结果。
类似上面userlist, ai这样的预定义名称还有:
1)tolower 转小写功能
2)toupper 转大写功能
3)index 返回连续序号12345
4)indexcn 返回连续序号一二三四五
5) len 返回捕获组匹配的字符的个数
3 信息提取统计功能:
信息提取统计功能需要正则表达式,上图是通过正则表达式提取《罗密欧与朱丽叶》专辑中的大写人名,”[A-Z]{3,20}”表示要查找的词由A-Z等大写字母组成,字符个数3-20个,这样取出来的基本都是人名。
4 查找替换换行符的问题
\n代表换行符,可在替换内容中使用\n即可。
当查找串中不含\n时,唐库按行内容查找,正则表达式中的 ^,$ 匹配每一行的开头及末尾。
当查找串中含\n时,唐库按文章内容查找,正则表达式中的 ^,$ 匹配整篇文章的开头及末尾。