StringMatchQ["string",patt]
测试 "string" 是否与字符串模式 patt 匹配.
StringMatchQ["string",RegularExpression["regex"]]
测试 "string" 是否与指定的普通表达式匹配.
StringMatchQ["string",{patt1,patt2,…}]
测试 "string" 是否与任一 patti 匹配.
StringMatchQ[{"string1","string2",…},patt]
对每一个 "stringi" 给出结果.
StringMatchQ[patt]
表示可应用于表达式的 StringMatchQ 的算符形式.
StringMatchQ
StringMatchQ["string",patt]
测试 "string" 是否与字符串模式 patt 匹配.
StringMatchQ["string",RegularExpression["regex"]]
测试 "string" 是否与指定的普通表达式匹配.
StringMatchQ["string",{patt1,patt2,…}]
测试 "string" 是否与任一 patti 匹配.
StringMatchQ[{"string1","string2",…},patt]
对每一个 "stringi" 给出结果.
StringMatchQ[patt]
表示可应用于表达式的 StringMatchQ 的算符形式.
更多信息和选项
- StringMatchQ 允许普通的 StringExpression 字符串模式,以及包含下列元字符的字符串模式:
-
* 零个或更多字符 @ 1 个或更多字符,除了大写字符 \\* 等 按文字输出等 - Verbatim["p"] 指定逐字的字符串 "p", * 和 @ 按文字输出.
- 设置选项 IgnoreCase->True 使得 StringMatchQ 忽略大小写.
- 设置选项 SpellingCorrection->True 使 StringMatchQ 即使有小部分字符不相同,也认为该字符串匹配模式.
- StringMatchQ[form][expr] 等价于 StringMatchQ[expr,form].
- StringMatchQ[BioSequence["type","seq"],patt] 比较字符串 "seq" 与 patt. 在这种情况下,patt 中的简并字母被解释为基于生物分子序列类型的通配符模式. 用 Verbatim["patt"] 在字面上匹配简并字母.
- BioSequence 的文档列出了每种类型的生物分子序列支持的简并字母.
- 如果 StringMatchQ 运算的生物分子序列是环状的,则可以进行环绕匹配.
范例
打开所有单元 关闭所有单元基本范例 (4)
StringMatchQ["apppbb", "p" ~~ ___ ~~ "b"]StringMatchQ["apppbb", "a" ~~ ___ ~~ "b"]StringMatchQ["apppbb", "a*b"]StringMatchQ[{"a", "b", "ab", "abcd", "bcde"}, "a" ~~ ___]使用 StringMatchQ 的算符形式:
StringMatchQ["a*b"]["apppbb"]Select[{"CAC1", "CTG1", "ACT1", "CGA1", "CTC1"}, StringMatchQ["*G*"]]范围 (10)
StringMatchQ["tester", "t" ~~ __ ~~ "t"]StringMatchQ["acggtaagc", Characters["acgt"]..]StringMatchQ["MATCH", "*H"]StringMatchQ["acggtaagc", RegularExpression["[acgt]+"]]StringMatchQ["abc 123 a", RegularExpression["a.*"] ~~ DigitCharacter..]StringMatchQ["31/12/2003", DatePattern[{"Day", "Month", "Year"}]]StringMatchQ["abcdabcdcd", {"a*", "*d"}]StringMatchQ["abcdabcdcd", "a*" | "*d"]StringMatchQ 自动线性作用于列表:
StringMatchQ[{"ability", "listable", "argument"}, "a" ~~ __ ~~ "t" ~~ ___]StringMatchQ[BioSequence["DNA", "ATG"], "AT" ~~ ("C" | "G")]StringMatchQ[BioSequence["DNA", "ATGGC"], "AN" ~~ ___]StringMatchQ["ATGGC", "AN" ~~ ___]用 Verbatim 避免简并匹配:
StringMatchQ[BioSequence["DNA", "ATGGC"], ___ ~~ Verbatim["N"] ~~ ___]StringMatchQ[BioSequence["DNA", "ATGNC"], ___ ~~ Verbatim["N"] ~~ ___]StringMatchQ[BioSequence["CircularDNA", "ACGCT"], "TA" ~~ ("S"..)]StringMatchQ[BioSequence["CircularDNA", "ACGCT"], "AT" ~~ ("S"..)]选项 (3)
IgnoreCase (2)
用 IgnoreCaseTrue 检查子字符串是否匹配,不考虑大小写:
StringMatchQ["acggtATTCaagc", __ ~~ "aT" ~~ __, IgnoreCase -> True]StringMatchQ["ac", IgnoreCase -> True]["AC"]SpellingCorrection (1)
选项 SpellingCorrection -> True 允许自动进行拼写检查:
StringMatchQ["commit", "comit", SpellingCorrection -> True]应用 (1)
属性和关系 (9)
对于按文字输出的字符串,SameQ 等于 StringMatchQ:
"abbaab" === "abbab"StringMatchQ["abbaab", "abbab"]对于列表中元素的快速提取,用 Pick:
dna = Table[StringJoin[RandomChoice[{"a", "c", "g", "t"}, 10]], {50000}];Pick[dna, StringMatchQ[dna, "a" ~~ ___ ~~ "ggg" ~~ ___]]//Timing//First与 Select 比较:
Select[dna, StringMatchQ[#, "a" ~~ ___ ~~ "ggg" ~~ ___]&]//Timing//FirstStringMatchQ 逐项作用于第一个参数中的列表的各个元素:
StringMatchQ[{"a", "Z", "9", "."}, LetterCharacter]StringMatchQ["string",{patt1,patt2,…}] 等价于 StringMatchQ["string",Alternatives[patt1,patt2,…]]:
StringMatchQ["acd", {"a*", "b*"}]StringMatchQ["acd", "a*" | "b*"]用 StringFreeQ 检测无子串匹配一个模式:
StringFreeQ["commit", "om" ~~ __]当 StringFreeQ 为 True 时,StringMatchQ 返回 False:
StringFreeQ["commit", "am" ~~ __]StringMatchQ["commit", "am" ~~ __]用 StringContainsQ 检查子字符串是否与模式匹配:
StringContainsQ["commit", "om" ~~ __]StringMatchQ 检查整个字符串是否与模式匹配:
StringMatchQ["commit", "om" ~~ __]当 StringContainsQ 为 False 时,StringMatchQ 通常返回 False:
StringContainsQ["commit", "am" ~~ __]StringMatchQ["commit", "am" ~~ __]StringContainsQ["string",patt] 等价于 StringMatchQ["string",___~~patt~~___]:
StringContainsQ[{"commit", "giveup"}, "om"]StringMatchQ[{"commit", "giveup"}, ___ ~~ "om" ~~ ___]StringStartsQ["string",patt] 等价于 StringMatchQ["string",StartOfString~~patt~~___]:
StringStartsQ[{"commit", "omit"}, "om"]StringMatchQ[{"commit", "omit"}, StartOfString ~~ "om" ~~ ___]StringEndsQ["string",patt] 等价于 StringMatchQ["string",___~~patt~~EndOfString]:
StringEndsQ[{"omit", "omen"}, "it"]StringMatchQ[{"omit", "omen"}, ___ ~~ "it" ~~ EndOfString]可能存在的问题 (3)
StringMatchQ 支持元字符:
StringMatchQ["aaa", "a*a"]StringFreeQ[ "aaa", "a*a"]将字符串模式封装在 Verbatim 中,禁用元字符,从而给出一致的结果:
StringMatchQ["aaa", Verbatim["a*a"]]StringMatchQ 不作用于有嵌入格式信息的字符串:
StringMatchQ["StyleBox[teStyleBox["ste",FontColor->RGBColor[1, 0, 0]]r]", "t" ~~ __]StringMatchQ["tester", "t" ~~ __]StringMatchQ["abcde", "A@", SpellingCorrection -> True]相关链接
历史
1988年引入 (1.0) | 在以下年份被更新:2003 (5.0) ▪ 2004 (5.1) ▪ 2016 (10.4) ▪ 2020 (12.2)
文本
Wolfram Research (1988),StringMatchQ,Wolfram 语言函数,https://reference.wolfram.com/language/ref/StringMatchQ.html (更新于 2020 年).
CMS
Wolfram 语言. 1988. "StringMatchQ." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/StringMatchQ.html.
APA
Wolfram 语言. (1988). StringMatchQ. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/StringMatchQ.html 年
BibTeX
@misc{reference.wolfram_2026_stringmatchq, author="Wolfram Research", title="{StringMatchQ}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/StringMatchQ.html}", note=[Accessed: 13-July-2026]}
BibLaTeX
@online{reference.wolfram_2026_stringmatchq, organization={Wolfram Research}, title={StringMatchQ}, year={2020}, url={https://reference.wolfram.com/language/ref/StringMatchQ.html}, note=[Accessed: 13-July-2026]}