用于搜索和匹配文本的模式
一个模式定义将文本与文本搜索函数匹配的规则,如包含
,匹配
,提取
.你可以建立一个模式表达式使用模式函数、操作符和文本。例如MATLAB®从公布名单开始“R”
,然后是四位数的年份,然后是任意一个年份“一个”
或“b”
.定义一个模式来匹配版本名称的格式:
帕特=“R”+ digitpattern (4) + (“一个”|“b”);
在字符串中匹配该模式:
STR = [字符串是在R2016b中引入的。“R2020b增加了图案。”];提取(str,帕特)
ans = 2x1字符串数组"R2016b" "R2020b"
模式由文字文本和使用+
,|
,~
操作符。您还可以使用对象的功能,使用的规则通常与正则表达式相关:
匹配字符模式—字母或数字、通配符或空格的范围,例如lettersPattern
.
搜索规则-模式必须出现多少次、大小写敏感性、可选模式和命名表达式,例如asManyOfPattern
而且optionalPattern
.
边界-在特定字符运行的开始或结束处的边界,例如alphanumericBoundary
.属性可以对边界模式进行否定~
操作符,以便与边界的匹配阻止其模式表达式的匹配。
组织模式—定义模式结构,指定模式表达式的显示方式,例如maskedPattern
而且namedPattern
.
这个函数模式
还使用语法创建模式函数,Pat = pattern(txt)
,在那里三种
是文字帕特
匹配。模式函数用于指定函数参数验证的模式类型。然而,模式
函数在其他情况下很少需要,因为MATLAB文本匹配函数接受文本输入。
包含 |
确定pattern是否在字符串中 |
匹配 |
确定模式是否与字符串匹配 |
数 |
计数字符串中模式的出现次数 |
endsWith |
确定字符串是否以pattern结尾 |
startsWith |
确定字符串是否以pattern开头 |
提取 |
从字符串中提取子字符串 |
取代 |
查找并替换一个或多个子字符串 |
replaceBetween |
替换起始点和结束点之间的子字符串 |
分裂 |
在分隔符上拆分字符串 |
擦除 |
删除字符串中的子字符串 |
eraseBetween |
删除起始点和结束点之间的子字符串 |
extractAfter |
在指定位置后提取子字符串 |
extractBefore |
在指定位置之前提取子字符串 |
extractBetween |
提取起始点和结束点之间的子字符串 |
insertAfter |
在指定的子字符串之后插入字符串 |
方法 |
在指定的子字符串之前插入字符串 |
digitsPattern |
匹配数字字符 |
lettersPattern |
匹配字母字符 |
alphanumericsPattern |
匹配字母和数字字符 |
characterListPattern |
匹配列表中的字符 |
whitespacePattern |
匹配空白字符 |
wildcardPattern |
匹配任意类型的最少字符 |
optionalPattern |
使模式可选匹配 |
possessivePattern |
匹配模式没有回溯 |
caseSensitivePattern |
匹配模式与大小写敏感性 |
caseInsensitivePattern |
匹配模式而不考虑大小写 |
asFewOfPattern |
尽可能少地匹配模式 |
asManyOfPattern |
尽可能多地匹配模式 |
alphanumericBoundary |
字母数字和非字母数字字符之间的匹配边界 |
digitBoundary |
匹配数字字符和非数字字符之间的边界 |
letterBoundary |
字母字符与非字母字符的匹配边界 |
whitespaceBoundary |
匹配空白字符和非空白字符之间的边界 |
lineBoundary |
匹配行首或行尾 |
textBoundary |
匹配文本的开始或结束 |
lookAheadBoundary |
在指定模式之前匹配边界 |
lookBehindBoundary |
按照指定的模式匹配边界 |
regexpPattern |
匹配指定正则表达式的模式 |
maskedPattern |
模式,使用指定的显示名称 |
namedPattern |
指定命名模式 |
lettersPattern
是匹配字母字符的典型字符匹配模式。创建一个匹配一个或多个字母字符的模式。
TXT = [“这”“是一个”“1 x6”“字符串”“数组”“。”];pat = letterpattern;
使用包含
来确定字符是否匹配帕特
都存在于每个字符串中。输出逻辑数组显示中的前五个字符串三种
包含字母,但第六个字符串不包含字母。
包含(txt,帕特)
ans =1x6逻辑阵列11 11 11 10
确定文本是否以指定的模式开始。输出逻辑数组显示了中的四个字符串三种
从字母开始,但两个字符串不需要。
帕特startsWith (txt)
ans =1x6逻辑阵列1 1 0 1 10 0
确定字符串是否完全匹配指定的模式。输出逻辑数组显示在哪个字符串中三种
只包含字母。
匹配(txt,帕特)
ans =1x6逻辑阵列1 0 0 1 10 0
计算模式匹配的次数。输出数值数组显示了次数lettersPattern
匹配的每个元素三种
.请注意,lettersPattern
匹配一个或多个字母,因此一组并发字母就是一个匹配。
帕特计数(txt)
ans =1×61 2 1 11 10
digitsPattern
是匹配数字字符的典型字符匹配模式。创建匹配数字字符的模式。
TXT = [“1鱼”“2鱼”“(1,0,0)鱼”“[0,0,1]鱼”];pat = digitpattern;
使用取代
编辑与模式匹配的文本片段。
替换(txt,帕特,“#”)
ans =1 x4字符串“#鱼”“#鱼”“[#,#,#]鱼”“[#,#,#]鱼”
控件创建一段新的文本“啊!”
匹配字母后的字符。
insertAfter (txt,帕特,“啊!”)
ans =1 x4字符串“1 !鱼”“2 !鱼”“(0 0 1 ! ! !鱼”"[0!,0!,1!] fish"
模式可以使用OR运算符创建,|
,带有文本。删除与指定模式匹配的文本。
TXT = delete (TXT)”、“|“]”|“(”)
txt =1 x4字符串1条鱼2条鱼100条鱼001条鱼
提取帕特
从新的文本。
提取(txt,帕特)
ans =1 x4字符串"1" "2" "100" "001"
使用模式计算文本中单个字符的出现次数。
txt =“她在海边卖贝壳。”;
创建帕特
作为一个模式
对象匹配使用的单个字母alphanumericsPattern
.提取模式。
pat = alphanumerpattern (1);字母=提取(txt,pat);
显示每个字母出现次数的直方图。
字母=低(字母);字母=分类的(字母);直方图(字母)
使用maskedPattern
以显示变量来代替复杂的模式表达式。
构建一个匹配由数字和算术运算符组成的简单算术表达式的模式。
mathSymbols = asManyOfPattern(digitpattern | characterListPattern(“+ - * / = "), 1)
mathSymbols =模式匹配:asManyOfPattern(digitpattern | characterListPattern("+-*/="),1)
构建匹配字符间有空格的算术表达式的模式mathSymbols
.
longExpressionPat = asManyOfPattern(mathSymbols + whitespacpattern) + mathSymbols
longExpressionPat =模式匹配:asManyOfPattern(asManyOfPattern(digitpattern | characterListPattern("+-*/="),1) + whitespacePattern) + asManyOfPattern(digitpattern | characterListPattern("+-*/="),1)
显示的模式表达式很长,难以阅读。使用maskedPattern
要显示变量名,请执行以下操作mathSymbols
,以代替模式表达式。
mathSymbols = maskedPattern(mathSymbols);shortExpressionPat = asManyOfPattern(mathSymbols + whitespacpattern) + mathSymbols
shortExpressionPat =模式匹配:asManyOfPattern(mathSymbols + whitespaceppattern) + mathSymbols显示所有细节
创建一个包含一些算术表达式的字符串,然后从文本中提取模式。
txt =“1 + 1的答案是什么?”哦,我知道了!1 + 1 = 2!”;算术=提取(txt,shortExpressionPat)
算术=2 x1字符串"1 + 1" "1 + 1 = 2"
从两个命名的模式创建一个模式。命名模式为模式的显示添加上下文。
构建两个模式:一个匹配以字母D开头和结尾的单词,另一个匹配以字母R开头和结尾的单词。
dWordsPat = letterBoundary + caseInsensitivePattern(“d”+ letterpattern +“d”) + letterBoundary;rWordsPat = letterBoundary + caseInsensitivePattern(“r”+ letterpattern +“r”) + letterBoundary;
使用已命名的模式构建一个模式,该模式查找一个以D开头和结尾的单词,后跟一个以R开头和结尾的单词。
dandrwordspit = dwordspit + whitespacpattern + rwordspit
dAndRWordsPat =模式匹配:letterBoundary + caseInsensitivePattern("d" + letterspatern + "d") + letterBoundary + whitespacePattern + letterBoundary + caseInsensitivePattern("r" + letterspatern + "r") + letterBoundary
这种模式很难阅读,并且没有传达关于其目的的太多信息。使用namedPattern
将模式指定为命名模式,以显示指定的名称和描述来代替模式表达式。
dwordspit = namedPattern(dwordspit,“dword”,"以D开头和结尾的单词");rwordspit = namedPattern(rwordspit,“rWords”,“以R开头和结尾的单词”);dandrwordspit = dwordspit + whitespacpattern + rwordspit
dAndRWordsPat =模式匹配:dWords + whitespaceppattern + rWords使用命名模式:dWords:以D开头和结尾的单词rWords:以R开头和结尾的单词显示更多细节
创建一个字符串并提取与模式匹配的文本。
txt =“爸爸,看这条分开的河!”;words = extract(txt, dandrwordspit)
单词= "分割的河流"
建立一个易于阅读的模式来匹配电子邮件地址。
电子邮件地址遵循这个结构username@domain.TLD,在那里用户名而且域由句号分隔的标识符组成。构建一个匹配由字母数字字符和的任意组合组成的标识符的模式“_”
字符。使用maskedPattern
为这个模式命名标识符
.
identifier = asManyOfPattern(alphanumerickpattern(1) | .输出说明“_”1);identifier = maskedPattern(标识符);
构建模式来匹配由标识符组成的域和子域。创建匹配指定列表中的tld的模式。
subdomain = asManyOfPattern(标识符+“。”) +标识符;domainName = namedPattern(标识符,“域名”);tld =“com”|“org”|“政府”|“净”|“edu”;
构建匹配电子邮件本地部分的模式,该模式匹配一个或多个用句点分隔的标识符。通过组合前面定义的模式,构建匹配域、TLD和任何潜在子域的模式。使用namedPattern
将这些模式分配给一个命名模式。
用户名= asManyOfPattern(标识符+“。”) +标识符;domain = optionalPattern(namedPattern(子域)+“。”) +...域名+“。”+...namedPattern (tld);
将所有模式组合成一个模式表达式。使用namedPattern
分配用户名
,域
,emailPattern
到已命名的模式。
emailAddress = namedPattern(用户名)+“@”+ namedPattern(域);emailPattern = namedPattern(emailAddress)
emailPattern =模式匹配emailAddress: username + "@" + domain使用命名模式:emailAddress: username + "@" +域用户名:asManyOfPattern(identifier + ".") +标识符domain: optionalPattern(subdomain + ".") + domainName + "." "+ tld subdomain: asManyOfPattern(identifier + ".") + identifier domainName: identifier tld: "com" | "org" | "gov" | "net" | "edu"显示所有详细信息
创建一个包含电子邮件地址的字符串,然后从文本中提取模式。
txt =“你可以通过电子邮件John.Smith@department.organization.org与我联系”;提取(txt emailPattern)
ans = "John.Smith@department.organization.org"
命名模式允许点索引,以便访问命名子模式。使用点索引为命名模式分配一个特定的值域
.
emailPattern.emailAddress.domain =“mathworks.com”
emailPattern =模式匹配emailAddress: username +“@”+域使用命名模式:emailAddress: username +“@”+域用户名:asManyOfPattern(标识符+“.”)+标识符域:“mathworks.com”显示所有详细信息
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。