对于初学者来说,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(没有匹配,没有置换)。

 

 

  • 比较复杂的用法。

 

 

 

 

 

 

例五:

 

Voice translation-rule 1

Rule 1 /^123…/ /456789/

 

例五表示以123开头的任意6位数被置换成456789。例如:123456->45678912345678->456789780123456->0123456(不匹配,无置换),123456ab->匹配,出错,无置换。

 

例六:

 

Voice translation-rule 1

Rule 1 /.*/ /123/

 

例六表示任意字符(包含空)被置换成123。例如:123->1234->123ab->123""->123

 

例七:

 

Voice translation-rule 1

Rule 1 /.+/ /123/

 

例七表示任意字符(不包含空)被置换成123。例如:123->1234->123ab->123""->""(空字符,不匹配,无置换)。

 

例八:

 

Voice translation-rule 1

Rule 1 /^0+/ /123/

 

例八表示任意多个0开头(不含空)的字符被置成123。例如:0789->12378900789->123789789->789(不匹配,无置换)

 

  • 数字切片

 

字符表达式

 

 

数字切片不太好理解,常令初学者抓狂。下面通过例子说明。

 

例九:

 

Voice translation-rule 1

Rule 1 /^\(123\)4\(567\)8/ /0\1\2/

 

例九表示凡是以12345678开头的字符,先置换成0,再在后面依次复制123567。例如:12345678->0123567123456789->012356791234567->1234567(不匹配,无置换)。

 

匹配部分的“\(”及“\)”可以这么理解:跟在“\”之后的“(”及“)”不是一个字符。例九匹配部分表示的意思是^(123)4(567),其中()是界定符,不是字符,所以要在左边加“\”来标明,因此最终的表示法就是:^\(123\)4\(567\)8

 

替代部分的“\1”和“\2”表示匹配部分复制切片部分的顺序号。例如“\1”表示第1个切片,“\2”表示第2个切片。

 

  • 号码typeplan

 

例十:

 

voice translation-rule 1
rule 1 /^1/ /901/ type national national
rule 2 /^1/ /9001/ type international international

 

例十表示凡是以1开头的字符,如果其typenation,就将前面加上90,如果其typeinternational,就在前面加上900。例如:1234(type national->9012341234type international->9001234

 

例十一:

 

voice translation-rule 1
rule 1 /^
1...$/ /0123\0/ type unknown national plan unknown isdn

 

例十一表示凡是以1开头的长度为4位的任意字符,如果typeunknownplanunknown,就在前面加上0123type改为nationplan改为isdn。例如:1234type unknownplan unknown->01231234type nationalplan isdn