主要内容

图案

搜索和匹配文本的模式

描述

一个图案定义带有文本搜索功能的匹配文本的规则包含火柴, 和提炼.你可以建立一个模式表达式使用模式函数,运算符和文字文本。例如,Matlab®发布名称,开始“r”,然后是四位数年份,然后是任意一个年份“一种”要么“b”.定义模式以匹配发布名称的格式:

帕特=“r”+ digitpattern (4) + (“一种”|“b”);

匹配字符串中的模式:

str = [“String在R2016b中被引入。”“在R2020B中添加了模式。”];提取物(str,pat)
ANS = 2x1字符串阵列“R2016B”“R2020B”

创建

模式由文字文本和其他使用+|, 和操作符。您还可以使用对象的功能,通常与正则表达式关联的规则:

  • 匹配字符模式- 字母或数字,通配符或白板等范围,例如lettersPattern

  • 搜索规则- 必须发生的模式,差别敏感性,可选模式和命名表达式,如可选的花attn.

  • 界限- 特定字符运行的开始或结尾的边界,例如AlphanumericBoundary..可以使用边界模式使用操作员,以便与边界匹配可防止其模式表达式的匹配。

  • 模式组织—定义模式结构,指定模式表达式的显示方式,例如maskedPatternnamedPattern

功能图案还使用语法创建模式函数,Pat =模式(TXT), 在哪里文本是字面文本帕特火柴。模式函数对于指定函数参数验证的模式类型很有用。然而图案其他情况很少需要函数,因为Matlab文本匹配函数接受文本输入。

对象的功能

展开全部

包含 确定模式是否在字符串中
火柴 确定模式是否与字符串匹配
计数字符串中的模式
endsWith 确定字符串是否以模式为止
以。。开始 确定字符串是否以模式开头
提炼 从字符串中提取子字符串
代替 查找并替换一个或多个子字符串
替换 替换起始点和结束点之间的子字符串
分裂 将日历持续时间分割为数字和持续时间单位
擦拭 删除字符串中的子字符串
eraseBetween 删除开始和结束点之间的子串
提取物 在指定位置后提取子串
extractBefore 在指定位置提取子串
摘录 提取起始点和结束点之间的子字符串
internawter. 指定子串后的插入字符串
方法 在指定的子串之前插入字符串
digitspattern. 匹配数字字符
lettersPattern 匹配字母字符
alphanumericspattern. 匹配字母和数字字符
characterListPattern 匹配列表中的字符
whitespacePattern 匹配空格字符
wildcardPattern 与任何类型的字符相匹配
可选的花attn. 使模式可选可匹配
占有的 匹配模式没有回溯
CASENSITYPATTERN. 匹配模式,具有壳体敏感性
酪蛋白塞的术术 匹配模式,不管大小写
AsfewofPattern. 匹配模式尽可能几次
AsmanyofPattern. 尽可能多地匹配模式
AlphanumericBoundary. 字母数字和非字母数字字符之间的匹配边界
DigitBoundary. 匹配数字字符和非原始字符之间的边界
贝福克 匹配字母字符和非字母字符之间的边界
空白空白 匹配空格字符和非空白字符之间的边界
lineBoundary 匹配行开始或结束
TextBeintary. 匹配文本的开始或结束
lookAheadBoundary 在指定模式之前匹配边界
lookbehindboundary. 在指定模式之前匹配边界
regexpPattern 匹配指定的正则表达式的模式
maskedPattern 指定显示名称的模式
namedPattern 指定命名模式

例子

全部折叠

lettersPattern是一个匹配字符字符的典型字符匹配模式。创建与一个或多个字母字符匹配的模式。

txt = [“这”“是”“1x6”“字符串”“数组”“。”];Pat = Letterspattern;

使用包含确定字符是否匹配帕特存在于每个字符串中。输出逻辑阵列显示第一个字符串中文本包含字母,但第六个字符串不包含。

包含(txt,pat)
ans =1x6逻辑阵列1 1 1 1 1 0

确定文本是否以指定的模式开始。输出逻辑数组显示了其中的四个字符串文本从字母开始,但两个字符串不要。

Startswith(TXT,PAT)
ans =1x6逻辑阵列1 1 0 1 1 0

确定字符串是否完全匹配指定的模式。输出逻辑数组显示输入的字符串文本除了字母中没有任何东西。

匹配(txt,帕特)
ans =1x6逻辑阵列1 0 0 1 1 0

计算模式匹配的模式的次数。输出数字阵列显示了多少次lettersPattern的每个元素匹配文本.注意lettersPattern匹配一个或多个字母,因此一组并发字母是单个匹配。

帕特计数(txt)
ans =1×6.1 2 1 1 10 0

digitspattern.是匹配数字字符的典型字符匹配模式。创建匹配数字字符的模式。

txt = [“1条鱼”“2条鱼”“[1,0,0]鱼”“[0,0,1]鱼”];帕特= digitsPattern;

使用代替编辑与模式匹配的文本部分。

替换(TXT,PAT,“#”
ans =1x4字符串“#鱼”“#鱼”“[#,#,#]鱼”“[#,#,#]鱼”

通过插入一个新的文本“!”匹配字母后的字符。

inersionAdter(TXT,PAT,“!”
ans =1x4字符串“1 !鱼”“2 !鱼”“(0 0 1 ! ! !鱼”“[0!,0!,1!] fish"

可以使用OR操作符创建模式,|与文本。擦除指定模式匹配的文本。

txt =擦除(txt,”、“|“]”|“[”
txt =1x4字符串“1鱼”“2鱼”“100鱼”“001鱼”

提取帕特来自新文本。

提取物(TXT,PAT)
ans =1x4字符串“1”“2”“100”“001”

使用模式来计算文本中单个字符的出现次数。

txt =“她在海岸卖海贝壳。”

创建帕特作为一个图案匹配单个字母使用的对象alphanumericspattern..提取模式。

帕特= alphanumericsPattern (1);信=提取(txt,帕特);

显示每个字母出现次数的直方图。

信=低(字母);信=分类(字母);直方图(字母)

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

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

mathsymbols = asmanyofpattern(digitspattern | characterlistpattern(“+ - * / = "),1)
mathsymbols =.图案匹配:asManyOfPattern(digitpattern | characterListPattern("+-*/="),1)

构建一个与字符之间的空格匹配算术表达式的模式arthmeticpat

longExpressionPat = asManyOfPattern(mathSymbols + whitespacpattern) + mathSymbols . longExpressionPat = asManyOfPattern(mathSymbols + whitespacpattern) + mathSymbols
longexpressionpat =图案匹配:AsmanyofPattern(AsmanyofPattern(DigitsPattern | CharactListPattern(“+  -  * / =”),1)+ WhiteSpacePattern)+ AsManyofPattern(DigitsPattern | CharactListPattern(“+  -  * / =”),1)

显示的模式表达式很长,很难阅读。使用maskedPattern要显示变量名称,mathsymbols.,代替模式表达。

mathsymbols = maskedpattern(mathsymbols);ShortexcressionPat = AsmanyofPattern(Mathsymbols + WhiteSpacePattern)+ Mathsymbols
shortexcressionPat =图案匹配:AsmanyofPattern(Mathsymbols + WhiteSpacePattern)+ Mathsymbols显示所有细节

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

txt =“1 + 1的答案是什么?哦,我知道!1 + 1 = 2!”;算法=提取物(TXT,ShortexcressionPat)
算术=2x1字符串“1 + 1”1 + 1 = 2“

创建来自两个命名模式的模式。命名模式将上下文添加到模式的显示。

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

dwordspat = letterboundary + caseInsensentpattern(“D”+ lettersPattern +“D”) + letterBoundary;rword啐=字母边界+ caseinsensitivpattern (“r”+ lettersPattern +“r”) + letterBoundary;

使用命名模式构建模式,该模式以d启动和结尾的单词,然后用R开始和结尾的单词。

ddrword啐= dword啐+ whitespacpattern + rword啐
Dandrwordspat =图案匹配:LetterBoundary + SutaseInsissityPattern(“D”+ Letterspattern +“D”)+ LetterBoundary + WhiteSpacePattern + LetterBoundary + SutaseInsensityPattern(“R”+ Letterspattern +“R”)+ LetterBoundary

这种模式很难读取,并没有传达有关其目的的许多信息。使用namedPattern将模式指定为显示指定名称和描述代替模式表达式的命名模式。

dWordsPat = namedPattern (dWordsPat,“dword”“用D开始和结束的词语”);rindspat = namedpattern(rindspat,“rwords”以R开头和结尾的单词);ddrword啐= dword啐+ whitespacpattern + rword啐
Dandrwordspat =图案匹配:使用命名模式的DWORDS + WHITESPACEPTN + ROWNS:DWORDS:用D ROMDS开始和结尾的单词:用R开始和结束的单词显示更多细节

创建一个字符串并提取与模式匹配的文本。

txt =“爸爸,看那条分开的河!”;单词=提取物(txt,dandromwordspat)
单词=“divide河”

构建一个易于阅读的模式来匹配电子邮件地址。

电子邮件地址遵循结构userename@domain.tld., 在哪里userename.由由周期分开的标识符组成。构建与由任何字母数字字符组合组成的标识符匹配的模式“_”人物。使用maskedPattern为这个模式命名标识符

标识符= AsManyofPattern(AlphanumericsPattern(1)|“_”1);标识符= maskedPattern(标识符);

构建模式以匹配由标识符组成的域和子域。创建一个与指定列表匹配的模式。

子域= asmanyofpattern(标识符+“。”)+标识符;domainname = namedpattern(标识符,“domainname”);tld =“com”|“org”|“GOV”|“网”|“edu”

构建用于匹配的电子邮件的本地部分的模式,它匹配一个或多个由周期分隔的标识符。通过组合先前定义的模式构建用于匹配域,TLD和任何潜在子域的模式。使用namedPattern将每个模式分配给命名模式。

用户名= asManyOfPattern(标识符+“。”)+标识符;Domain =可选型Pattern(NamePattern(子域)+“。”)+......domainname +“。”+......namedpattern(tld);

将所有模式组合成单个模式表达式。使用namedPattern分配用户名, 和emailPattern命名模式。

EmailAddress = namepattern(用户名)+“@”+ namedpattern(域);EmailPattern = NamePattern(EmailAddress)
emailPattern =图案匹配EmailAddress:用户名+“@”+域使用命名模式:EmailAddress:Username +“@”+域用户名:AsManyofPattern(标识符+“。”)+标识符域:可选托盘(子域+“。)+ domainname +”。“+ TLD子域:AsManyofPattern(标识符+“。”)+标识符DomainName:标识符TLD:“com”|“org”|“GOV”|“网”|“edu”显示所有细节

创建包含电子邮件地址的字符串,然后从文本中提取模式。

txt =“你可以通过电子邮件在John.Smith@department.Organization.org”;提取(txt emailPattern)
ans = " John.Smith@department.organization.org "

命名模式允许点索引以访问命名为子模式。使用点索引为命名模式分配特定值

EmailPattern.emailAddress.domain =.“mathworks.com”
emailPattern =图案匹配EmailAddress:用户名+“@”+域使用命名模式:EmailAddress:UserName +“@”+域用户名:AsManyofPattern(标识符+“。”)+标识符域:“mathworks.com”显示所有详细信息
介绍了R2020b