Cache支持两种模式匹配:
这些模式匹配系统是完全独立的,每个模式匹配系统只能在其自己的上下文中使用,但是可以使用逻辑AND和OR语法,来组合不同模式匹配。
- ClassMethod MyFunction()
- {
- set str = "abcDEfgh"
-
- //输出1
- w str ?.e2U.e,!
- //输出0
- w $match(str, "^.{3,7}"),!
-
- //输出not match
- if (str ?.e2U.e) && ($match(str, "^.{3,7}")){
- w "match"
- }else{
- w "not match"
- }
- }
- ClassMethod MyFunction1()
- {
- set str = "999-5-6666"
- //输出1
- w str ? 3N1"-"1N1"-"4N
- }
A | 匹配任何大写或小写字母字符 包括ASCLL值从65到90(A到Z)、97到122(a到z)、177、181、186、192到214、216到246、248到255 |
C | 匹配任何ACSLL控制字符 ASCLL值从0到31、127到159 |
E | 匹配任何字符 包括非打印字符、空格字符和控制字符 |
L | 匹配任何小写字母字符 包括ASCLL值从97到122(a到z)、170、181、186、223到246、248到255 |
N | 匹配0到9(ASCLL从48到57)中的任何一个 |
P | 匹配任何标点符号 包括ASCLL值从32到47、58到64、91到96、123到126、160到169、171到177、180、182到184、187、191、215、247 |
U | 匹配任何大写字母字符 包括ASCLL值从65到90(A到Z)、192到214、216到222 |
如下所示:
- ClassMethod MyFunction2()
- {
- set str1 = "U"
- //输出1
- w "大写字母:", str1 ? 1a,!
-
- set str2 = "u"
- //输出1
- w "小写字母:", str2 ? 1L,!
-
- set str3 = $char(10)
- //输出1
- w "控制字符:", str3 ? 1c,!
-
- set str4 = "11"
- //输出1
- w "数字字符:", str4 ? 2N,!
-
- set str5 = ".,:"
- //输出1
- w "标点符号:", str5 ? 3p,!
- }
- ClassMethod MyFunction3()
- {
- set str = "AAAAA"
- //表示匹配1到5个A,输出:1
- w str ? 1.5"A",!
-
- set str = "AAAAA"
- //输出:0
- w str ? 1.4"A",!
-
- set str = "ababab"
- //输出:1
- w str ? 1.3"ab"
- set str = "aabababc",!
- //输出:0
- w str ? 1.3"ab"
- }
- ClassMethod MyFunction4()
- {
- set str = "abcDefg"
- //输出:1
- w str ? 1.7A,!
-
- //输出:0
- w str ? 1.6A,!
- }
- ClassMethod MyFunction5()
- {
- set str = "a"
- //表示匹配0到2个大写或小写字母,输出:1
- w str ? .2A,!
-
- set str = "ABCDEFGH"
- //表示匹配1到任意数量的大写字母,输出:1
- w str ? 1.A,!
-
- set str = "s./:l@3"
- //表示匹配任意数量的任何字符,输出:1
- w str ? .E,!
- }
要定义多个匹配模式,可以将n和模式组合成任意长度的序列
- ClassMethod MyFunction()
- {
- set str = "2022-06-06"
- //输出1
- w str ? 4N1"-"2N1"-"2N,!
-
- set str = "6/6/2022"
- //输出1
- w str ? 1.2N1"/"1.2N1"/"1.4N,!
- }
使用组合模式时,将按照匹配模式规则顺序匹配。
- ClassMethod MyFunction()
- {
- //输出1
- w "123" ? 3N.4L,!
-
- //输出0
- w "123abcde" ? 3N.4L,!
-
- //输出1
- w "123abcde" ? 3N.5L,!
-
- //输出0
- w "123abcde" ? 5L.3N,!
- }
可以根据多个匹配模式交替进行判断
- ClassMethod MyFunction()
- {
- //输出1
- w "a" ? 1(1"a",1"b"),!
- //输出0
- w "ab" ? 1(1"a",1"b"),!
- //输出1
- w "ab" ? 1(1"a",1"b",1"ab"),!
- }