模式匹配

简介: 模式匹配

模式匹配

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,!


相关文章
|
4月前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
85 0
|
算法 C语言
模式匹配算法
本文主要用C语言实现模式匹配算法。
134 2
模式匹配算法
|
数据采集 安全 数据处理
正则表达式对字符串处理
正则表达式对字符串处理
122 0
正则表达式对字符串处理
|
Scala 开发者
For 表达式的模式匹配 | 学习笔记
快速学习 For 表达式的模式匹配
|
JavaScript 前端开发
【正则表达式】字符串模式匹配,提高开发效率
今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会用到的,学会正则表达式之后会让你除了提高效率外,会给你带来绝对的成就感。
【正则表达式】字符串模式匹配,提高开发效率
|
Java
正则表达式的 Java语法
正则表达式的 Java语法
132 0
练习正则表达式的好方法推荐
练习正则表达式的好方法推荐
729 0