Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

テキストの検索と置換

R2016b 以降。「検索と置換」 (R2016a) から置き換え。

テキスト データの処理では、多くの場合に部分文字列の検索と置換が行われます。テキストを検索して異なる情報を返す関数がいくつかあります。テキストが存在することを確認する関数もあれば、出現回数のカウント、開始インデックスの検索、または部分文字列の抽出を行う関数もあります。これらの関数は、"yes" のような文字ベクトルおよび string スカラーと、["yes","no";"abc","xyz"] のような文字配列および string 配列を扱います。さらに、パターンを使用して、1 つ以上の文字または数字などの検索ルールを定義できます。

テキストの検索

テキストの有無を調べるには、logical 値を返す containsstartsWithendsWith などの関数を使用します。logical 値 1 は true に対応し、0 は false に対応します。

txt = "she sells seashells by the seashore"; 
TF = contains(txt,"sea")
TF = logical
   1

テキストの出現回数を計算するには、関数countを使用します。

n = count(txt,"sea")
n = 2

テキストの出現位置を特定するには、開始インデックスを返す関数strfindを使用します。

idx = strfind(txt,"sea")
idx = 1×2

    11    28

テキストを検索して抽出するには、extractextractBetweenextractBeforeextractAfterなどの抽出関数を使用します。

mid = extractBetween(txt,"sea","shore")
mid = 
"shells by the sea"

オプションで、境界のテキストを含めます。

mid = extractBetween(txt,"sea","shore","Boundaries","inclusive")
mid = 
"seashells by the seashore"

配列内のテキストの検索

検索と置換を行う関数は、複数要素をもつ配列内のテキストも検索できます。たとえば、複数の曲のタイトルから色名を検索します。

songs = ["Yellow Submarine"; 
         "Penny Lane";  
         "Blackbird"]; 

colors =["Red","Yellow","Blue","Black","White"]; 

TF = contains(songs,colors)
TF = 3x1 logical array

   1
   0
   1

色名を含む曲をリストするには、元の配列 songs のインデックスとして logical 配列 TF を使用します。この手法は "論理インデックス付け" と呼ばれます。

colorful = songs(TF)
colorful = 2x1 string
    "Yellow Submarine"
    "Blackbird"

関数 replace を使用して、colors の要素に一致する songs のテキストを string "Orange" に置換します。

replace(songs,colors,"Orange")
ans = 3x1 string
    "Orange Submarine"
    "Penny Lane"
    "Orangebird"

パターンの照合

R2020b 以降

"sea"、"yellow" などのリテラル テキストを検索するだけでなく、パターンに一致するテキストを検索できます。数字を検索する digitsPattern など、事前定義されたパターンが多数あります。

address = "123a Sesame Street, New York, NY 10128"; 
nums = extract(address,digitsPattern) 
nums = 2x1 string
    "123"
    "10128"

検索精度を高めるために、パターンを組み合わせることができます。たとえば、文字 "S" で始まる単語を検出します。文字 "S" を指定する string と lettersPattern を使用して、文字 "S" の後に続く文字を検出します。

pat = "S" + lettersPattern; 
StartWithS = extract(address,pat) 
StartWithS = 2x1 string
    "Sesame"
    "Street"

詳細については、パターン表現の作成を参照してください。

参考

| | | | |

関連するトピック