模式搜索和匹配的文本
一个模式定义了规则匹配文本的文本搜索功能包含
,匹配
,提取
。你可以建立一个模式表达式使用模式函数、操作符和文字文本。例如,MATLAB®释放的名字,开始“R”
,其次是四位数,然后“一个”
或“b”
。定义一个模式匹配的格式发布的名字:
帕特=“R”+ digitsPattern (4) + (“一个”|“b”);
在字符串匹配模式:
str = [介绍了“R2016b。”在R2020b”模式增加了。”];提取(str,帕特)
ans = 2 x1字符串数组“R2016b”“R2020b”
模式是由文字文本和其他模式使用+
,|
,~
操作符。您还可以创建通用的模式使用对象的功能常与正则表达式,使用规则:
匹配字符模式字母或数字的范围,通配符,或空白,如lettersPattern
。
搜索规则——模式必须发生多少次,灵敏度,可选模式,和命名表达式等asManyOfPattern
和optionalPattern
。
边界——边界的开始或结束的特殊字符,如alphanumericBoundary
。边界模式可以使用的否定~
运营商,这样匹配的边界阻止匹配模式表达式。
组织模式——定义模式结构和指定如何显示模式表达式,如maskedPattern
和namedPattern
。
这个函数模式
还创建模式和语法功能,帕特=模式(txt)
,在那里三种
是文字的文本帕特
匹配。模式函数是用于指定模式类型函数参数验证。然而,模式
MATLAB函数很少所需的其他情况下,因为文本匹配函数接受文本输入。
包含 |
确定字符串的模式 |
匹配 |
确定模式匹配字符串 |
数 |
计数模式的字符串 |
endsWith |
确定字符串结尾的模式 |
startsWith |
确定字符串开始的模式 |
提取 |
从字符串中提取子字符串 |
取代 |
查找和替换一个或更多的子字符串 |
replaceBetween |
开始点和结束点之间的子字符串替换 |
分裂 |
在分隔符分割的字符串 |
擦除 |
删除字符串中的子字符串 |
eraseBetween |
删除子字符串的开始点和结束点之间 |
extractAfter |
提取子字符串在指定位置 |
extractBefore |
提取子字符串在指定位置 |
extractBetween |
开始点和结束点之间提取子字符串 |
insertAfter |
后插入字符串指定的子字符串 |
方法 |
插入字符串之前指定的子字符串 |
digitsPattern |
匹配数字字符 |
lettersPattern |
匹配字母字符 |
alphanumericsPattern |
匹配字母和数字字符 |
characterListPattern |
匹配字符的列表 |
whitespacePattern |
匹配空格字符 |
wildcardPattern |
匹配任何类型的几个字符 |
optionalPattern |
使匹配模式可选 |
possessivePattern |
匹配模式没有回溯 |
caseSensitivePattern |
匹配模式的区分大小写 |
caseInsensitivePattern |
匹配模式的情况 |
asFewOfPattern |
匹配模式尽可能几次 |
asManyOfPattern |
尽可能多地匹配模式 |
alphanumericBoundary |
匹配字母和非字母数字的字符之间的界限 |
digitBoundary |
匹配数字字符和数字字符之间的界限 |
letterBoundary |
匹配字母字符之间的边界和nonletter字符 |
whitespaceBoundary |
匹配空格字符之间的边界和非空字符 |
lineBoundary |
比赛开始或结束 |
textBoundary |
匹配文本的开始或结束 |
lookAheadBoundary |
匹配边界之前指定的模式 |
lookBehindBoundary |
匹配边界后指定模式 |
regexpPattern |
模式匹配指定的正则表达式 |
maskedPattern |
模式与指定的显示名称 |
namedPattern |
指定命名模式 |
lettersPattern
是一个典型的匹配字符模式匹配字母字符。创建一个模式匹配一个或多个字母字符。
txt = [“这”“是一个”“1 x6”“字符串”“数组”“。”];帕特= lettersPattern;
使用包含
确定字符匹配帕特
存在于每一个字符串。输出逻辑数组显示字符串的前五三种
不含字母,但第六字符串。
包含(txt,帕特)
ans =1 x6逻辑阵列1 1 1 1 1 0
确定文本与指定的模式开始。输出逻辑数组显示四个字符串三种
从字母开始,但两个字符串不。
帕特startsWith (txt)
ans =1 x6逻辑阵列1 1 0 1 1 0
确定指定的字符串完全匹配的模式。输出逻辑数组显示的字符串三种
只包含字母。
匹配(txt,帕特)
ans =1 x6逻辑阵列1 0 0 1 1 0
一个模式匹配的次数计数。输出数值数组显示了多少次lettersPattern
匹配的每个元素三种
。请注意,lettersPattern
匹配一个或多个字母组并发信件是一个匹配。
帕特计数(txt)
ans =1×61 2 1 1 1 0
digitsPattern
是一个典型的匹配字符模式相匹配的数字字符。创建一个模式匹配数字字符。
txt = [“1鱼”“2鱼”“(1,0,0)鱼”“[0,0,1]鱼”];帕特= digitsPattern;
使用取代
编辑的文本匹配的模式。
替换(txt,帕特,“#”)
ans =1 x4字符串“#鱼”“#鱼”“[#,# #]鱼”“[#,# #]鱼”
创建一个新的文本插入一个“啊!”
字符匹配后的信件。
insertAfter (txt,帕特,“啊!”)
ans =1 x4字符串“1 !鱼”“2 !鱼”“(0 0 1 ! ! !鱼”"[0!,0!,1!] fish"
可以使用或操作符创建模式,|
与文本。删除文本匹配指定的模式。
txt =擦掉(txt,”、“|“]”|“(”)
txt =1 x4字符串鱼鱼“1”“2”“100条鱼”“001条鱼”
提取帕特
新文本。
提取(txt,帕特)
ans =1 x4字符串“1”“2”“100”“001”
使用模式来计算单个字符的出现次数在一段文字。
txt =“她在海边卖海贝壳海岸。”;
创建帕特
作为一个模式
对象匹配单个字母使用alphanumericsPattern
。提取模式。
帕特= alphanumericsPattern (1);信=提取(txt,帕特);
显示每个字母出现的次数的柱状图。
信=低(字母);信=分类(字母);直方图(字母)
使用maskedPattern
显示一个变量代替复杂的模式表达式。
构建一个模式匹配简单算术表达式组成的数字和算术运算符。
mathSymbols = asManyOfPattern (digitsPattern | characterListPattern (“+ - * / = "),1)
mathSymbols =模式匹配:asManyOfPattern (digitsPattern | characterListPattern (" + - * / = "), 1)
建立一个模式匹配使用算术表达式之间的空白字符mathSymbols
。
longExpressionPat = asManyOfPattern (mathSymbols + whitespacePattern) + mathSymbols
longExpressionPat =模式匹配:asManyOfPattern (asManyOfPattern (digitsPattern | characterListPattern (" + - * / = "), 1) + whitespacePattern) + asManyOfPattern (digitsPattern | characterListPattern (" + - * / = "), 1)
显示的模式表达式很长,难以阅读。使用maskedPattern
显示变量名,mathSymbols
的模式表达式。
mathSymbols = maskedPattern (mathSymbols);shortExpressionPat = asManyOfPattern (mathSymbols + whitespacePattern) + mathSymbols
shortExpressionPat =模式匹配:asManyOfPattern (mathSymbols + whitespacePattern) + mathSymbols显示所有的细节
创建一个字符串包含一些算术表达式,然后从文本中提取模式。
txt =“1 + 1的答案是什么?哦,我知道!1 + 1 = 2 !”;shortExpressionPat算术=提取(txt)
算术=2 x1字符串“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 =模式匹配:letterBoundary + caseInsensitivePattern (“d”+ lettersPattern +“d”) + letterBoundary + whitespacePattern + letterBoundary + caseInsensitivePattern (r + lettersPattern + r) + letterBoundary
这种模式很难阅读,不传达信息的目的。使用namedPattern
指定的模式作为命名模式显示指定的名称和描述的模式表达式。
dWordsPat = namedPattern (dWordsPat,“dword”,“与D开始和结束的单词”);rWordsPat = namedPattern (rWordsPat,“rWords”,“与R单词的开始和结束”);dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat =模式匹配:dword + whitespacePattern + rWords使用命名模式:dword:单词与D rWords:开始和结束的单词,开始和结束与R显示更多的细节
创建一个字符串,并提取模式相匹配的文本。
txt =“爸爸,看看分裂河!”;dAndRWordsPat词=提取(txt)
话说= " /河”
建立一个易于阅读模式匹配电子邮件地址。
电子邮件地址结构username@domain.TLD,在那里用户名和域由标识符隔开。建立一个模式匹配任何字母数字字符的组合,组成的标识符“_”
字符。使用maskedPattern
命名此模式标识符
。
标识符= asManyOfPattern (alphanumericsPattern (1) |“_”1);标识符= maskedPattern(标识符);
构建模式匹配域和子域组成的标识符。创建一个模式匹配提取从一个指定的列表。
子域名= asManyOfPattern(标识符+“。”)+标识符;域名= namedPattern(标识符,“域名”);tld =“com”|“org”|“政府”|“净”|“edu”;
建立一个模式匹配本地电子邮件的一部分,匹配一个或多个标识符隔开。建立一个模式匹配的域,TLD,任何潜在的子域结合前面定义的模式。使用namedPattern
分配每一个模式来命名模式。
用户名= asManyOfPattern(标识符+“。”)+标识符;域= optionalPattern (namedPattern(子域)+“。”)+…域名+“。”+…namedPattern (tld);
结合所有的模式为单一模式表达式。使用namedPattern
分配用户名
,域
,emailPattern
命名模式。
emailAddress = namedPattern(用户名)+“@”+ namedPattern(域);emailPattern = namedPattern (emailAddress)
emailPattern =模式匹配emailAddress:用户名+“@”+域使用命名模式:emailAddress:用户名+“@”+域用户名:asManyOfPattern(标识符+“。”)+标识域:optionalPattern(子域名+“。”)+域名+“。”+tld subdomain : asManyOfPattern(identifier + ".") + identifier domainName: identifier tld : "com" | "org" | "gov" | "net" | "edu" Show all details
创建一个字符串,其中包含一个电子邮件地址,然后从文本中提取模式。
txt =“你可以联系我通过电子邮件在John.Smith@department.organization.org”;提取(txt emailPattern)
ans = " John.Smith@department.organization.org "
命名模式允许dot-indexing为了访问命名的子模式。使用dot-indexing分配一个特定的值指定的模式域
。
emailPattern.emailAddress。域=“mathworks.com”
emailPattern =模式匹配emailAddress:用户名+“@”+域使用命名模式:emailAddress:用户名+“@”+域用户名:asManyOfPattern(标识符+“。”)+域标识符:“mathworks.com”显示所有的细节
您有一张这本Beispiels geanderte版本。您这本Beispiel麻省理工学院古老Anderungen offnen吗?
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。