本章介绍regex()函数的多种用法。
描述:
用正则表达式匹配字符串
语法:
s.regex(rs)
备注:
用正则表达式rs匹配串s,返回匹配节数组,不匹配返回null
参数:
s |
字符串 |
rs |
正则表达式 |
选项:
@c |
大小写不敏感 |
@u |
使用unicode |
返回值:
匹配节数组
示例:
|
A |
|
1 |
4,23,a,test |
|
2 |
a,D |
|
3 |
小明,中国 |
|
4 |
=A1.regex("(\\d),([0-9]*),([a-z]),([a-z]*)") |
|
5 |
=A2.regex@c("([a-z]),([a-z])") |
使用@c选项,不区分大小写 |
6 |
=A2.regex("([a-z]),([a-z])") |
不匹配返回null |
7 |
=A3.regex@u("(\\u5c0f\\u660e),(\\u4e2d\\u56fd)") |
|
相关概念:
描述:
用正则表达式匹配序列中的字符串成员
语法:
A.regex(rs,Fi) |
正则表达式rs无拆出项时,用数据类型为字符串的字段Fi和rs匹配。返回排列A中经过过滤后的新排列。Fi省略时用当前记录和rs匹配。 |
A.regex(rs;Fi,…) |
正则表达式rs有拆出项时,用正则表达式rs拆分序列A中的字符串成员,返回结果拼成以Fi为字段的序表。 |
备注:
用正则表达式rs匹配序列A中的字符串成员,返回结果拼成以Fi为字段的序表
参数:
A |
成员为字符串的序列或排列 |
rs |
正则表达式。拆出项指的是以分隔符分隔的多个正则表达式,并且每个正则表达式用括号括起来。每个拆出项匹配按顺序对应的字段。例如:"(.*),(a.*)" 为逗号分隔的两个拆出项。 |
Fi |
字段名,数据类型为字符串 |
选项:
@c |
大小写不敏感 |
@u |
使用unicode |
返回值:
序表
示例:
|
A |
|
1 |
=demo.query("select NAME,SURNAME from EMPLOYEE") |
|
2 |
=A1.(~. array().concat@c()) |
|
3 |
=A2.regex("A.*") |
省略Fi,默认用当前记录和rs匹配 |
4 |
=A2.regex("(V.*),(.*)";name,surname) |
|
5 |
=file("D:\\a.txt").import@ts() |
|
6 |
=A5.(#1).regex@c("(.*),(a.*)";id,name) |
匹配姓名以a或A开头的人员 |
7 |
=demo.query("select 部门,姓名 from 员工表") |
|
8 |
=A7.(~.array().concat@c()) |
|
9 |
=A8.regex@u("(\\u9500\\u552e\\u90e8),(.*)";销售部,员工姓名) |
使用unicode匹配销售部 |
10 |
=A1.regex("V.*",NAME) |
正则表达式rs无拆出项时,用数据类型为字符串的字段Fi和rs匹配 |
相关概念:
描述:
用正则表达式匹配游标中的字符串成员
语法:
cs.regex(rs;Fi,…)
备注:
用正则表达式rs匹配游标cs中的字符串成员,返回结果拼成以Fi为字段的原游标,支持多路游标。
参数:
cs |
成员为字符串的游标 |
rs |
正则表达式 |
Fi |
结果字段名 |
选项:
@c |
大小写不敏感 |
@u |
使用unicode |
返回值:
原游标cs
示例:
|
A |
|
1 |
=file("D:\\a.txt").import@ts().(~.array().concat@c()) |
a.txt内容为以逗号作为字段分隔符的序表 |
2 |
=A1.cursor() |
|
3 |
=A1.cursor() |
|
4 |
=A2.regex("(.*),(A.*)";id,name).fetch() |
匹配姓名以A开头的人员 |
5 |
=A3.regex@c("(.*),(A.*)";id,name).fetch() |
匹配姓名以a或A开头的人员 |
6 |
=file("D:\\c.txt":"UTF-8").import@ts().(~.array().concat@c()) |
|
7 |
=A6.cursor() |
|
8 |
=A7.regex@u("(\\u9500\\u552e\\u90e8),(.*)";销售部,员工姓名).fetch() |
使用unicode匹配销售部 |
相关概念: