テキストの検索と置換
テキスト データの処理では、多くの場合に部分文字列の検索と置換が行われます。テキストを検索して異なる情報を返す関数がいくつかあります。テキストが存在することを確認する関数もあれば、出現回数のカウント、開始インデックスの検索、または部分文字列の抽出を行う関数もあります。これらの関数は、"yes"
のような文字ベクトルおよび string スカラーと、["yes"
,"no";"abc"
,"xyz"
] のような文字配列および string 配列を扱います。さらに、パターンを使用して、1 つ以上の文字または数字などの検索ルールを定義できます。
テキストの検索
テキストの有無を調べるには、logical 値を返す contains
、startsWith
、endsWith
などの関数を使用します。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
テキストを検索して抽出するには、extract
、extractBetween
、extractBefore
、extractAfter
などの抽出関数を使用します。
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"
詳細については、パターン表現の作成を参照してください。
参考
contains
| extract
| count
| pattern
| replace
| strfind