GW上voice translation语法令人困惑。下面由简到繁用例子进行解析。
例一:
voice translation-rule 1
rule 1 /123/ /456/
例一表示凡包含123的号码其首个出现的123被替换成456。例如:123->456,1234->4564,0123->0456,123123->456123,0123123->0456123。
例二:
voice translation-rule 1
rule 1 /^123/ /456/
例二表示凡以123开头的号码其开头123被替换成456。例如:123->456,1234->4564,01234->01234(不匹配,没有置换)。
例三:
voice translation-rule 1
rule 1 /123$/ /456/
例三表示以123结尾的号码其结尾123替换成456。例如:123->456,0123->0456,1234->1234(不匹配,没有置换)。
例四:
voice translation-rule 1
rule 1 /^123$/ /456/
例四是例二和例三的结合,表示完全匹配123的号码被转换成456。例如:123->456,1234->1234(不匹配,没有转换),0123->0123(没有匹配,没有置换)。
比较复杂的用法。
下表是通配符
. 任意单个数字
0 to 9,*,# 任意特定字符
[0-9] 任意范围内的数字
* 匹配0个或多个前面的字符
+匹配1个或多个前面的字符
? 匹配0个或1个前面的字符
用通配符表示的几个特殊值
.* 任意字符,包含空。
.+ 任意字符,不含空。
^$ 空
例五:
Voice translation-rule 1
Rule 1 /^123…/ /456789/
例五表示以123开头的任意6位数被置换成456789。例如:123456->456789,12345678->45678978,0123456->0123456(不匹配,无置换),123456ab->匹配,出错,无置换。
例六:
Voice translation-rule 1
Rule 1 /.*/ /123/
例六表示任意字符(包含空)被置换成123。例如:123->123,4->123,ab->123,""->123。
例七:
Voice translation-rule 1
Rule 1 /.+/ /123/
例七表示任意字符(不包含空)被置换成123。例如:123->123,4->123,ab->123,""->""(空字符,不匹配,无置换)。
例八:
Voice translation-rule 1
Rule 1 /^0+/ /123/
例八表示任意多个0开头(不含空)的字符被置成123。例如:0789->123789,00789->123789,789->789(不匹配,无置换)
数字切片
字符表达式
\ 匹配部分,用于表示切片起始
\ 替代部分,用于表示复制切片
( )界定需要保留的字符
数字切片不太好理解,常令初学者抓狂。下面通过例子说明。
例九:
Voice translation-rule 1
Rule 1 /^\(123\)4\(567\)8/ /0\1\2/
例九表示凡是以12345678开头的字符,先置换成0,再在后面依次复制123和567。例如:12345678->0123567,123456789->01235679,1234567->1234567(不匹配,无置换)。
匹配部分的“\(”及“\)”可以这么理解:跟在“\”之后的“(”及“)”不是一个字符。例九匹配部分表示的意思是^(123)4(567),其中()是界定符,不是字符,所以要在左边加“\”来标明,因此最终的表示法就是:^\(123\)4\(567\)8。
替代部分的“\1”和“\2”表示匹配部分复制切片部分的顺序号。例如“\1”表示第1个切片,“\2”表示第2个切片。
号码type及plan。
例十:
voice translation-rule 1
rule 1 /^1/ /901/ type national national
rule 2 /^1/ /9001/ type international international
例十表示凡是以1开头的字符,如果其type是nation,就将前面加上90,如果其type是international,就在前面加上900。例如:1234(type national)->901234,1234(type international)->9001234。
例十一:
voice translation-rule 1
rule 1 /^1...$/ /0123\0/ type unknown national plan unknown isdn
例十一表示凡是以1开头的长度为4位的任意字符,如果type是unknown,plan是unknown,就在前面加上0123,type改为nation,plan改为isdn。例如:1234(type unknown,plan unknown)->01231234(type national,plan isdn)