matches 运算符

在逻辑表达式中,可将一个字符串表达式与另一个字符串(称为 match 条件)进行比较,比较方式是从左至右比较逐个字符。此功能的用法类似于 UNIX® 或 Perl 中的正则表达式的用法。

以下是一个示例:

  // variable myVar01 is the string expression 
  // whose contents will be compared to a match criterion
  myVar01 = "abcdef";

  // the next logical expression evaluates to "true" 
  if (myVar01 matches "a?c*")
    ;
  end

match 条件可以是类型为 CHAR 或 MBCHAR 的文字或项;或者类型为 UNICODE 的项。match 条件可包括下列任何字符:

*
充当通配符,与字符串表达式中的零个或多个字符相匹配
?
充当通配符,与字符串表达式中的单个字符相匹配
[ ]
充当定界符,以使两个方括号之间的任一字符充当字符串表达式中的下一个字符的有效匹配。例如,match 条件的以下部分指示 a、b 或 c 是有效匹配:
  [abc]
-
在括号定界符中创建一个范围,以使该范围内的任何字符充当字符串表达式中的下一个字符的有效匹配。例如,match 条件的以下部分指示 a、b 或 c 是有效匹配:
  [a-c]

在括号定界符之外的连字符(-)就没有特殊含义。

^
创建一条通配规则,这样的话,如果插入标记(^)是括号定界符中的第一个字符,则定界字符之外的任何字符将充当字符串表达式中下一个字符的有效匹配。例如,match 条件的以下部分指示 a、b 或 c 之外的任何字符是有效匹配:
  [^abc]
插入标记在下列情况下没有特殊含义:
  • 在括号定界符外部
  • 在括号定界符内部,但不是第一个字符
\
指示下一个字符将与字符串表达式中的单个字符进行比较。反斜杠(\)被称为转义字符,原因是它使字符发生转义;转义字符不会与字符串表达式中的任何字符进行比较。

转义字符通常会加在 match 条件中有其它含义的字符之前;例如,加在星号(*)或问号(?)之前。

将反斜杠用作转义字符(这是缺省行为)时,因为 EGL 使用同一转义字符以允许在任何文本表达式中包括引号,从而会产生问题。在 match 条件的上下文中,必须指定两个反斜杠,原因是运行时可用的文本就是缺少初始斜杠的文本。

建议尽量避免发生此问题。 通过使用稍后示例中所示的转义子句将另一字符指定为转义字符。但是,不能使用双引号(")作为转义字符。

matchCriterion 中的另一字符是要与字符串表达式中的单个字符进行比较的文字。

以下示例显示转义子句的用法:
  // variable myVar01 is the string expression 
  // whose contents will be compared to a match criterion
  myVar01 = "ab*def";

  // the next logical expression evaluates to "true" 
  if (myVar01 matches "ab\\*[abcd][abcde][^a-e]")
    ;
  end
    
  // the next logical expression evaluates to "true"
  if (myVar01 matches "ab+*def" escape "+")
    ;
  end
    

相关参考
EGL 语句
逻辑表达式
文本表达式

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.