MATLAB中wildcardPattern函数用法

发布于:2025-03-17 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

语法

说明

示例

消极匹配模式

匹配单个字符

匹配具有指定大小的字符集

拆分以逗号分隔的列表


        wildcardPattern函数的功能是匹配尽可能少的任意类型的字符。

语法

pat = wildcardPattern
pat = wildcardPattern(N)
pat = wildcardPattern(minCharacters,maxCharacters)
pat = wildcardPattern(___,"Except",exceptPat)

说明

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

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

        pat = wildcardPattern(minCharacters,maxCharacters) 匹配至少 minCharacters 个但不超过 maxCharacters 个字符。inf 是 maxCharacters 的有效值。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)

如图所示:

匹配具有指定大小的字符集

        创建字符串 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"

参数说明

N — 要匹配的精确字符数

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

minCharacters — 要匹配的最小字符数。

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

maxCharacters — 要匹配的最大字符数

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

exceptPat — 通配符匹配的例外

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

pat — 模式表达式

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

基于线程的环境

        使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。