模式匹配

简介: 模式匹配

模式匹配

Caché支持两种模式匹配系统:

  • Caché模式匹配是一种用问号(?)分隔模式字符串开头的语法。或('?)。
  • 正则表达式可以与$LOCATE$MATCH函数以及%Regex.Matcher类的方法一起使用。(这些函数方法在2016之后才有,2010版本没有。)

这些模式匹配系统是完全独立的。每个模式匹配系统只能在其自己的上下文中使用。但是,可以使用逻辑AND和OR语法组合来自不同模式匹配系统的模式匹配测试。

s var = "abcDEf"
  if (var ?.e2U.e) && $match(var, "^.{3,7}") { 
    w "match!"
  } else { 
    w "no match"
  }
复制代码
  • 模式匹配运算符测试其左操作数中的字符是否由右操作数中的模式正确指定。它返回一个布尔值。当模式正确指定左操作数中的字符模式时,模式匹配运算符会产生TRUE(1)结果。如果模式没有正确指定左操作数中的字符模式,则生成FALSE(0)结果。
s str = "521-13-1411"
  s match = str ? 3N1"-"2N1"-"4N
  w match,!
复制代码

提供的特殊模式代码

代码 含义
A 匹配任何大写或小写字母字符。包括ASCII值65到90(A到Z)、97到122(a到z)、170、181、186、192到214、216到246和248到255
C 匹配任何ASCII控制字符(ASCII值0到31和扩展ASCII值127到159)
E 匹配任何字符,包括非打印字符、空格字符和控制字符。
L 匹配任何小写字母字符。包括ASCII值97到122(a到z)、170、181、186、223到246和248到255
N 匹配10个数字字符0到9(ASCII 48到57)中的任何一个。
P 匹配任何标点符号。包括ASCII值32到47、58到64、91到96、123到126、160到169、171到177、180、182到184、187、191、215和247
U 匹配任何大写字母字符。包括ASCII值65到90(A到Z)、192到214和216到222
R,B,M 匹配西里尔8位字母字符映射。R匹配任何西里尔字符(ASCII值192到255)。B匹配大写西里尔字符(ASCII值192到223)。M匹配小写西里尔字符(ASCII值为224到255)。这些模式代码仅在俄语8位Windows区域设置(Ruw8)中有意义。在其他地区,可以成功执行,但无法匹配任何字符。
ZFWCHARZ 匹配日语ZENKAKU字符集中的任何字符。ZFWCHARZ匹配全角字符,例如汉字范围中的字符,以及在某些终端仿真器显示时占用双倍单元格的许多非汉字字符。ZFWCHARZ还匹配JIS2004标准中定义的303个代理项对字符,将每个代理项对视为单个字符。例如,代理项对字符$WC(131083)?1ZFWCHARZ匹配。此模式匹配代码需要日语区域设置。
ZHWKATAZ 匹配日文汉字假名字符集中的任何字符。这些是Unicode65377(FF61)65439(FF9F)。此模式匹配代码需要日语区域设置。
s var = "A"
  w "字母字符? "
  w var ? 1A,!
  s var = $char(10)
  w "控制字符? "
  w var ? 1C,!
  s var = $char(13) _ "A" _ "a"
  w "任何字符? "
  w var ? 3E,!
  s var = "a"
  w "小写字母? "
  w var ? 1L,!
  s var = "2"
  w "数字字符? "
  w var ? 1N,!
  s var = "."
  w "标点符号? "
  w var ? 1P,!
  s var = "U"
  w "大写字母? "
  w var ? 1U,!
复制代码
  • 特殊模式代码不区分大小写;可以用大写或小写指定。
s str = "12345"
  s match = str ? 5N
  w match,!
  s match = str ? 5n
  w match,!
  s str = "1"
  s match = str ? 1NU
  w match,!
  s str = "A"
  s match = str ? 1nu
  w match,!


相关文章
|
5月前
常用正则表达式 (必备)
常用正则表达式 (必备)
|
5天前
|
测试技术
正则表达式
正则表达式
14 1
|
5月前
最全面的常用正则表达式大全
最全面的常用正则表达式大全
最全常用正则表达式大全
最全常用正则表达式大全
|
数据安全/隐私保护
正则表达式之最常用的
正则表达式之最常用的
81 0
|
前端开发 JavaScript Java
正则表达式(极其适合零基础)
正则表达式(极其适合零基础)
149 0
正则表达式(极其适合零基础)
|
Java 数据安全/隐私保护
浅谈正则表达式的使用
在开发中,正则表达式的使用场景是多种多样的,同时也能够支持各种复杂场景,同时,正则表达式也是支持许多种语言,对于字符串的截取,匹配,替换 有着巨大的作用。
245 0
|
移动开发
【小技巧】正则表达式
正则表达式小技巧 1 空行替换 ^\r\n
512 0
|
数据安全/隐私保护
正则表达式总结
正则表达式 定义: 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
1244 0