maskedPattern
说明
示例
显示复杂模式时隐藏细节
使用 maskedPattern
显示变量来代替复杂的模式表达式。
构建一个模式,该模式匹配由数字和算术运算符组成的简单算术表达式。
mathSymbols = asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
mathSymbols = pattern
Matching:
asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
使用 mathSymbols
构建一个模式,该模式匹配在字符之间具有空白的算术表达式。
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
Use details to show more information
创建一个包含一些算术表达式的字符串,然后从文本中提取模式。
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
Use details to show more information
创建一个字符串,然后从文本中提取与模式匹配的字符。
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
Use details to show more information
hexDigit
匹配十六进制数的单个数字。通过构建一个模式来匹配完整的十六进制数,该模式匹配字面文本 "0x"
后跟一个或多个出现的 hexDigit
实例。
hexNumberPattern = "0x" + asManyOfPattern(hexDigit, 1)
hexNumberPattern = pattern
Matching:
"0x" + asManyOfPattern(hexDigit,1)
Use details to show more information
使用此模式从字符串中提取十六进制数。
hexNumbers = extract("The answer is 0x2A", hexNumberPattern)
hexNumbers = "0x2A"
输入参数
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2020b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)