namedPattern
语法
说明
示例
创建命名模式来组织复杂的模式
使用 namedPattern
将一个模式分配给某命名模式。
构建一个模式,该模式匹配由数字和算术运算符组成的简单算术表达式。
mathSymbols = asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
mathSymbols = pattern
Matching:
asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
使用命名模式构建一个模式,该模式匹配在字符之间具有空白的算术表达式。
longExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
longExpressionPat = pattern
Matching:
asManyOfPattern(asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1) + whitespacePattern) + asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
此表达式很长且难以阅读。使用 namedPattern
将模式分配给命名模式 mathSymbols
。
mathSymbols = namedPattern(mathSymbols); shortExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
shortExpressionPat = pattern
Matching:
asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
Using named patterns:
mathSymbols: asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
创建一个包含一些算术表达式的字符串,然后从文本中提取模式。
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"
为复杂模式指定名称和说明
基于两个命名模式创建一个模式。命名模式为模式的显示添加上下文。
构建两个模式:一个模式匹配以字母 D 开头和结尾的单词,另一个模式匹配以字母 R 开头和结尾的单词。
dWordsPat = letterBoundary + caseInsensitivePattern("d" + lettersPattern + "d") + letterBoundary; rWordsPat = letterBoundary + caseInsensitivePattern("r" + lettersPattern + "r") + letterBoundary;
使用命名模式构建一个模式,该模式查找以 D 开头和结尾的单词后跟以 R 开头和结尾的单词。
dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat = pattern
Matching:
letterBoundary + caseInsensitivePattern("d" + lettersPattern + "d") + letterBoundary + whitespacePattern + letterBoundary + caseInsensitivePattern("r" + lettersPattern + "r") + letterBoundary
此模式难以阅读,也不能充分表示其目的。使用 namedPattern
将模式指定为显示指定名称和说明的命名模式以代替模式表达式。
dWordsPat = namedPattern(dWordsPat,"dWords", "Words that start and end with D"); rWordsPat = namedPattern(rWordsPat,"rWords", "Words that start and end with R"); dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat = pattern
Matching:
dWords + whitespacePattern + rWords
Using named patterns:
dWords: Words that start and end with D
rWords: 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"
匹配电子邮件地址
构建易于阅读的模式来匹配电子邮件地址。
电子邮件地址遵循结构 username@domain.TLD,其中 username 和 domain 由用句点分隔的标识符组成。构建一个模式,它匹配由字母数字字符和 "_"
字符的任意组合组成的标识符。使用 maskedPattern
将此模式命名为 identifier
。
identifier = asManyOfPattern(alphanumericsPattern(1) | "_", 1);
identifier = maskedPattern(identifier);
构建模式以匹配由标识符组成的域和子域。创建一个匹配指定列表中的 TLD 的模式。
subdomain = asManyOfPattern(identifier + ".") + identifier; domainName = namedPattern(identifier,"domainName"); tld = "com" | "org" | "gov" | "net" | "edu";
构建一个模式来匹配电子邮件的本地部分,它匹配一个或多个用句点分隔的标识符。通过组合先前定义的各模式构建一个模式,用于匹配域、TLD 和任何可能存在的子域。使用 namedPattern
将其中每个模式分配给一个命名模式。
username = asManyOfPattern(identifier + ".") + identifier; domain = optionalPattern(namedPattern(subdomain) + ".") + ... domainName + "." + ... namedPattern(tld);
将所有模式组合成一个模式表达式。使用 namedPattern
将 username
、domain
和 emailPattern
分配给命名模式。
emailAddress = namedPattern(username) + "@" + namedPattern(domain);
emailPattern = namedPattern(emailAddress)
emailPattern = pattern
Matching emailAddress:
username + "@" + domain
Using named patterns:
emailAddress : username + "@" + domain
username : asManyOfPattern(identifier + ".") + identifier
domain : optionalPattern(subdomain + ".") + domainName + "." + tld
subdomain : asManyOfPattern(identifier + ".") + identifier
domainName: identifier
tld : "com" | "org" | "gov" | "net" | "edu"
Use details to show more information
创建一个包含电子邮件地址的字符串,然后从文本中提取模式。
txt = "You can reach me by email at John.Smith@department.organization.org";
extract(txt,emailPattern)
ans = "John.Smith@department.organization.org"
命名模式允许使用点索引以便访问命名子模式。使用点索引将特定值赋给命名模式 domain
。
emailPattern.emailAddress.domain = "mathworks.com"
emailPattern = pattern
Matching emailAddress:
username + "@" + domain
Using named patterns:
emailAddress: username + "@" + domain
username : asManyOfPattern(identifier + ".") + identifier
domain : "mathworks.com"
Use details to show more information
输入参数
pat
— 输入模式
模式数组 | 字符串数组 | 字符向量 | 字符向量元胞数组
输入模式,指定为pattern
、字符串数组、字符向量或字符向量元胞数组。
数据类型: char
| string
| pattern
| cell
name
— 模式名称
字符串数组 | 字符向量 | 字符向量元胞数组
模式名称,指定为字符串标量、字符向量或字符向量元胞数组。
数据类型: char
| string
| cell
description
— 命名模式说明
字符串数组 | 字符向量 | 字符向量元胞数组
命名模式说明,指定为字符串标量、字符向量或字符向量元胞数组。显示模式表达式时,命名模式及其说明将与完整模式表达式分开显示。
数据类型: char
| string
| cell
扩展功能
基于线程的环境
使用 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)