模式匹配

简介: 模式匹配

模式匹配

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


相关文章
|
18天前
|
人工智能 运维 自然语言处理
2025 必藏 RPA 清单:从国际巨头到国产新锐,小白也能轻松上手的智能工具
RPA(机器人流程自动化)正成为企业数字化转型的核心工具,广泛应用于金融、电商、政务等领域。它如同“数字员工”,可自动完成重复性电脑操作,提升效率3-5倍且错误率低于0.1%。2025年全球市场规模达145亿美元,中国市场增速领先。本文盘点三款主流RPA工具:国际标杆UiPath、微软生态利器Power Automate,以及融合AI的国产新锐实在Agent,助力个人与企业高效选型,释放人力价值。
342 9
|
JavaScript Java 关系型数据库
Springboot+vue的校园社团管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
Springboot+vue的校园社团管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
|
6月前
|
机器学习/深度学习 人工智能 编解码
智谱AI发布新版VLM开源模型GLM-4.1V-9B-Thinking,引入思考范式,性能提升8倍
视觉语言大模型(VLM)已经成为智能系统的关键基石。
1220 0
|
11月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
350 19
|
11月前
|
人工智能 NoSQL Redis
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
介绍Collaborative Gym,一个专注于人机协作的框架,支持异步交互和多种任务环境。
452 14
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。
329 11
|
安全 Java Linux
深入解析Android系统架构及其对开发者的意义####
【10月更文挑战第21天】 本文旨在为读者揭开Android操作系统架构的神秘面纱,探讨其如何塑造现代移动应用开发格局。通过剖析Linux内核、硬件抽象层、运行时环境及应用程序框架等关键组件,揭示Android平台的强大功能与灵活性。文章强调了理解Android架构对于开发者优化应用性能、提升用户体验的重要性,并展望了未来技术趋势下Android的发展方向。 ####
478 0
|
消息中间件 负载均衡 前端开发
Spring Cloud Stream 体系及原理介绍
Spring Cloud Stream在 Spring Cloud 体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在 Spring Cloud 应用程序中的开发。
14204 2
Spring Cloud Stream 体系及原理介绍
|
前端开发 IDE Java
用 Spring Boot 打包你的 React 应用
先讲一讲这篇文章的背景故事。之前我的团队需要在我们需求的基础架构上节省一些资金,并且由于我们要构建的这个应用程序中,大部分负载都会在客户端而非服务端上,所以我们决定试验一下能否将一个 Spring 应用程序与一个 React 应用结合起来,并打包成一个 war 文件。
|
C++ 存储 索引
面向 C++ 的现代 CMake 教程(一)(5)
面向 C++ 的现代 CMake 教程(一)
284 0