Main Content

wildcardPattern

匹配尽可能少的任意类型的字符

自 R2020b 起

说明

pat = wildcardPattern 创建一个模式,该模式根据需要匹配尽可能少的字符,包括零个字符。wildcardPattern消极模式,这意味着如果在没有任何输入的情况下单独使用它,它会在字符串中的字符之前或之后匹配空字符串 ("")。

示例

pat = wildcardPattern(N) 创建一个准确匹配 N 个字符的模式。

示例

pat = wildcardPattern(minCharacters,maxCharacters) 匹配至少 minCharacters 个但不超过 maxCharacters 个字符。infmaxCharacters 的有效值。wildcardPattern 使匹配的字符数尽可能接近 minCharacters 个。

示例

pat = wildcardPattern(___,"Except",exceptPat) 指定从匹配中排除的例外。wildcardPattern 匹配除模式 exceptPat 指定的字符以外的任何字符。

示例

示例

全部折叠

函数 wildcardPattern消极模式,这意味着它会根据需要匹配尽可能少的任何类型的字符,甚至零个字符。

从字符串中提取一个 wildcardPattern。字符串中任意两个连续字符之间以及第一个字符之前和最后一个字符之后都有空字符串。因此,extract 在该字符串中匹配并提取五个空字符串。

txt = "lazy";
emptyStr = extract(txt,wildcardPattern)
emptyStr = 5x1 string
    ""
    ""
    ""
    ""
    ""

strlength(emptyStr)
ans = 5×1

     0
     0
     0
     0
     0

如果 wildcardPattern 受到其他模式的限制,它将匹配模式表达式要匹配的最小字符数。

txt = "aa aba abaa a a123a a!?.a";
pat = "a" + wildcardPattern + "a";
extract(txt,pat)
ans = 6x1 string
    "aa"
    "aba"
    "aba"
    "a a"
    "a123a"
    "a!?.a"

使用 wildcardPattern 匹配所有类型的单个字符。

使用 fileread 函数从莎士比亚的十四行诗中读取文本并将其转换为 string

sonnets = string(fileread('sonnets.txt'));
strip(extractBetween(sonnets,"Shakespeare","But"))
ans = 
    "I
     
       From fairest creatures we desire increase,
       That thereby beauty's rose might never die,"

创建一个模式 pat,它匹配任何类型的单个字符。提取该模式。将 string 数组 characters 转换为 categorical,使其成为 histogram 的有效输入。使用 histogram 显示每个字符的出现次数。

pat = wildcardPattern(1);
characters = extract(sonnets,pat);
characters = lower(characters);
characters = categorical(characters);
histogram(characters)

Figure contains an axes object. The axes object contains an object of type categoricalhistogram.

创建字符串 txt 变量。创建一个模式,该模式匹配一个空白后跟两到三个通配符,再后跟一个字母。从 txt 中提取该模式。

txt = "1a 23b 456c 7890d";
pat = " " + wildcardPattern(2,3) + lettersPattern;
extract(txt,pat)
ans = 2x1 string
    " 23b"
    " 456c"

使用 wildcardPattern 拆分一个以逗号分隔的列表。

创建字符串 txt 变量。使用 wildcardPattern 构建一个模式,该模式匹配除 "," 后跟空白字符之外的任何类型的任意数量的字符。提取该模式。

txt = "1 fish, 2 Fish, [1,0,0] fish, [0,0,1] fish";
exceptPat = "," + whitespacePattern;
pat = asManyOfPattern(wildcardPattern(1,inf,"Except",exceptPat),1);
extract(txt,pat)
ans = 4x1 string
    "1 fish"
    " 2 Fish"
    " [1,0,0] fish"
    " [0,0,1] fish"

输入参数

全部折叠

要匹配的字符数,指定为非负整数标量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要匹配的最小字符数,指定为非负整数标量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要匹配的最大字符数,指定为非负整数标量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

通配符匹配的例外,指定为模式对象、字符向量或字符串标量。wildcardPattern 将匹配指定例外之外的任何字符。

示例: pat = wildcardPattern("except",digitsPattern) 创建一个排除数字字符的模式。

数据类型: pattern | char | string

输出参量

全部折叠

模式表达式,以 pattern 对象形式返回。

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2020b 中推出