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文字列パターンと次のメタキャラクタを含む文字列パターンの省略形の両方が使える.
-
* 任意数(零を含む)の文字 @ 大文字を除く任意数(零を含まない)の文字 \\* 等 文字通りの * 等 - Verbatim["p"]は,*や@を含んだ string が文字通り解釈されるように指定する.
- オプション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//FirstSelectと比較する:
Select[dna, StringMatchQ[#, "a" ~~ ___ ~~ "ggg" ~~ ___]&]//Timing//FirstStringMatchQは第1引数内の文字列のリストに縫い込まれる:
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" ~~ __]StringMatchQは,StringContainsQがFalseのときは一般に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 Language. 1988. "StringMatchQ." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/StringMatchQ.html.
APA
Wolfram Language. (1988). StringMatchQ. Wolfram Language & System Documentation Center. Retrieved from 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: 07-November-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: 07-November-2026]}