Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

maskedPattern

具有指定显示名称的模式

说明

示例

newpat = maskedPattern(pat) 创建一个模式,该模式在显示 newpat 的模式表达式时使用 pat 的输入名称。您可以使用 maskedPattern 通过隐藏表达式中的一些细节来简化长而复杂的模式表达式。

示例

newpat = maskedPattern(pat,mask) 指定在显示 newpat 的模式表达式时要显示的名称 mask

示例

全部折叠

使用 maskedPattern 显示变量来代替复杂的模式表达式。

构建一个模式,该模式匹配由数字和算术运算符组成的简单算术表达式。

mathSymbols = asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
mathSymbols = pattern
  Matching:

    asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)

使用 arithmeticPat 构建一个模式,该模式匹配在字符之间具有空白的算术表达式。

longExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
longExpressionPat = pattern
  Matching:

    asManyOfPattern(asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1) + whitespacePattern) + asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)

显示的模式表达式很长且难以阅读。使用 maskedPattern 显示变量名称 mathSymbols 来代替模式表达式。

mathSymbols = maskedPattern(mathSymbols);
shortExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
shortExpressionPat = pattern
  Matching:

    asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols

  Show all details

创建一个包含一些算术表达式的字符串,然后从文本中提取模式。

txt = "What is the answer to 1 + 1? Oh, I know! 1 + 1 = 2!";
arithmetic = extract(txt,shortExpressionPat)
arithmetic = 2x1 string
    "1 + 1"
    "1 + 1 = 2"

使用 maskedPattern 显示复杂模式表达式的指定名称。

构建两个模式:一个模式匹配以字母 D 开头和结尾的单词,另一个模式匹配以字母 R 开头和结尾的单词。

dWordsPat = letterBoundary + caseInsensitivePattern("d" + lettersPattern + "d") + letterBoundary;
rWordsPat = letterBoundary + caseInsensitivePattern("r" + lettersPattern + "r") + letterBoundary;

使用 maskedPattern 显示指定的名称来代替模式表达式。使用掩码模式构建一个模式,掩码模式查找以 D 开头和结尾的单词后跟以 R 开头和结尾的单词。

dWordsPat = maskedPattern(dWordsPat,"Words that start and end with D");
rWordsPat = maskedPattern(rWordsPat,"Words that start and end with R");
dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat = pattern
  Matching:

    Words that start and end with D + whitespacePattern + Words that start and end with R

  Show all details

创建一个字符串,然后从文本中提取与模式匹配的字符。

txt = "Dad, look at the divided river!";
words = extract(txt,dAndRWordsPat)
words = 
"divided river"

创建自定义模式函数并使用 maskedPattern 隐藏细节。

创建函数 atLeastOneOfPattern,该函数接受输入模式 pat 并创建模式 newPat,该模式匹配 pat 的一个或多个连续实例。使用 maskedPattern 隐藏所显示模式的细节。

function newPat = atLeastOneOfPattern(pat)
arguments
    pat pattern
end

newPat = asManyOfPattern(pat,1);
newPat = maskedPattern(newPat,compose("atLeastOneOfPattern(%s)",pat));

end

使用输入 "a" 调用 atLeastOneOfPattern 并显示 newPat

newPat = atLeastOneOfPattern("a")
newPat = 

  pattern

  Matching:

    atLeastOneOfPattern("a")

  Show all details

使用 characterListPattern 创建模式 hexDigit,该模式匹配 0-9 范围的数字字符和 a-f 范围的字母。由于 characterListPattern 区分大小写,请使用 caseInsensitivePattern 以使 hexDigit 在匹配时不区分字符的大小写。

hexDigit = characterListPattern('0','9') | characterListPattern('a','f');
hexDigit = caseInsensitivePattern(hexDigit);
hexDigit = maskedPattern(hexDigit)
hexDigit = pattern
  Matching:

    hexDigit

  Show all details

hexDigit 匹配十六进制数的单个数字。通过构建一个模式来匹配完整的十六进制数,该模式匹配字面文本 "0x" 后跟一个或多个出现的 hexDigit 实例。

hexNumberPattern = "0x" + asManyOfPattern(hexDigit, 1)
hexNumberPattern = pattern
  Matching:

    "0x" + asManyOfPattern(hexDigit,1)

  Show all details

使用此模式从字符串中提取十六进制数。

hexNumbers = extract("The answer is 0x2A", hexNumberPattern)
hexNumbers = 
"0x2A"

输入参数

全部折叠

输入模式,指定为pattern、字符串数组、字符向量或字符向量元胞数组。

数据类型: char | string | pattern | cell

掩码模式名称,指定为字符串标量、字符向量或字符向量元胞数组。

数据类型: char | string | cell

输出参数

全部折叠

输出模式,以pattern或模式对象数组形式返回。

在 R2020b 中推出