Main Content

extractBetween

開始点と終了点の間にある部分文字列を抽出

説明

newStr = extractBetween(str,startPat,endPat) は、str から、部分文字列 startPatendPat の間に出現する部分文字列を抽出します。抽出された部分文字列に startPatendPat は含まれません。

str が string 配列の場合、newStr は string 配列です。それ以外の場合、newStr は文字ベクトルの cell 配列です。

str が string 配列または文字ベクトルの cell 配列の場合、extractBetweenstr の各要素から部分文字列を抽出します。

newStr = extractBetween(str,startPos,endPos) は、str から、位置 startPosendPos の間に出現する部分文字列 (それらの位置にある文字を含む) を抽出します。extractBetween は、部分文字列を newStr として返します。

newStr = extractBetween(___,'Boundaries',bounds) は、前述の任意の構文で指定した始点と終点について、含めるか除外するかを指示します。bounds'inclusive' の場合はそれらを含め、bounds'exclusive' の場合は除外します。たとえば、extractBetween(str,startPat,endPat,'Boundaries','inclusive') は、startPatendPat およびそれらの間にあるすべてのテキストを newStr として返します。

すべて折りたたむ

string 配列を作成し、部分文字列の間に出現するテキストを選択します。

str = "The quick brown fox"
str = 
"The quick brown fox"

部分文字列 "quick "" fox" の間に出現するテキストを選択します。関数 extractBetween はテキストを選択しますが、出力に "quick "" fox" は含めません。

newStr = extractBetween(str,"quick "," fox")
newStr = 
"brown"

string 配列の各要素から部分文字列を選択します。開始インジケーターと終了インジケーターとして異なる部分文字列を指定する場合、それらを含む string 配列または cell 配列は、str と同じサイズでなければなりません。

str = ["The quick brown fox jumps";"over the lazy dog"]
str = 2x1 string
    "The quick brown fox jumps"
    "over the lazy dog"

newStr = extractBetween(str,["quick ";"the "],[" fox";" dog"])
newStr = 2x1 string
    "brown"
    "lazy"

R2020b 以降

タグで囲まれたテキストの string 配列を作成します。

str = ["<courseName>Calculus I</courseName>";
       "<semester>Fall 2020</semester>";
       "<schedule>MWF 8:00-8:50</schedule>"]
str = 3x1 string
    "<courseName>Calculus I</courseName>"
    "<semester>Fall 2020</semester>"
    "<schedule>MWF 8:00-8:50</schedule>"

タグで囲まれたテキストを抽出します。関数 wildcardPattern を使用し、最初に任意の開始タグおよび終了タグと一致するパターンを作成します。

startPat = "<" + wildcardPattern + ">"
startPat = pattern
  Matching:

    "<" + wildcardPattern + ">"

endPat = "</" + wildcardPattern + ">"
endPat = pattern
  Matching:

    "</" + wildcardPattern + ">"

次に、関数 extractBetween を呼び出します。

newStr = extractBetween(str,startPat,endPat)
newStr = 3x1 string
    "Calculus I"
    "Fall 2020"
    "MWF 8:00-8:50"

pattern オブジェクトを作成する関数の一覧については、patternを参照してください。

string 配列を作成し、数値として指定された開始位置と終了位置の間の部分文字列を選択します。

str = "Edgar Allen Poe"
str = 
"Edgar Allen Poe"

ミドル ネームを選択します。string 内の 7 番目と 11 番目の位置を指定します。

newStr = extractBetween(str,7,11)
newStr = 
"Allen"

string 配列の各要素から部分文字列を選択します。数値配列を使用して異なる開始位置と終了位置を指定する場合、数値配列は入力 string 配列と同じサイズでなければなりません。

str = ["Edgar Allen Poe";"Louisa May Alcott"]
str = 2x1 string
    "Edgar Allen Poe"
    "Louisa May Alcott"

newStr = extractBetween(str,[7;8],[11;10])
newStr = 2x1 string
    "Allen"
    "May"

境界を含めるか除外するかを指定して、string 配列からテキストを選択します。境界を含める場合、extractBetween は選択するテキストに境界を含めます。境界を除外する場合、extractBetween は選択するテキストに境界を含めません。

str1 = "small|medium|large"
str1 = 
"small|medium|large"

6 番目と 13 番目の位置の間にあるテキストを選択しますが、それらの位置にある文字は含めません。

newStr = extractBetween(str1,6,13,'Boundaries','exclusive')
newStr = 
"medium"

2 つの部分文字列の間にあるテキストと、部分文字列自体も選択します。

str2 = "The quick brown fox jumps over the lazy dog"
str2 = 
"The quick brown fox jumps over the lazy dog"
newStr = extractBetween(str2," brown","jumps",'Boundaries','inclusive')
newStr = 
" brown fox jumps"

文字ベクトルを作成し、開始位置と終了位置の間にあるテキストを選択します。

chr = 'mushrooms, peppers, and onions'
chr = 
'mushrooms, peppers, and onions'
newChr = extractBetween(chr,12,18)
newChr = 1x1 cell array
    {'peppers'}

部分文字列の間のテキストを選択します。

newChr = extractBetween(chr,'mushrooms, ',', and')
newChr = 1x1 cell array
    {'peppers'}

入力引数

すべて折りたたむ

入力テキスト。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。

抽出するテキストの開始位置をマークするテキストまたはパターン。次のいずれかとして指定します。

  • string 配列

  • 文字ベクトル

  • 文字ベクトルの cell 配列

  • pattern 配列 "(R2020b 以降)"

str が string 配列または文字ベクトルの cell 配列の場合、str のすべての要素から部分文字列を抽出できます。すべての部分文字列の開始位置が同じであるか、あるいは str の要素ごとに開始位置が異なるかを指定できます。

  • 同じ開始位置を指定するには、startPat を文字ベクトル、string スカラー、または pattern オブジェクトとして指定します。

  • 異なる開始位置を指定するには、startPat を string 配列、文字ベクトルの cell 配列、または pattern 配列として指定します。

例: extractBetween(str,"AB","YZ") は、str の各要素から ABYZ の間の部分文字列を抽出します。

例: str21 列の string 配列の場合、extractBetween(str,["AB";"FG"],["YZ";"ST"]) は、str(1) 内の ABYZ の間の部分文字列、および str(2) 内の FGST の間の部分文字列を抽出します。

抽出するテキストの終了位置をマークするテキストまたはパターン。次のいずれかとして指定します。

  • string 配列

  • 文字ベクトル

  • 文字ベクトルの cell 配列

  • pattern 配列 "(R2020b 以降)"

str が string 配列または文字ベクトルの cell 配列の場合、str のすべての要素から部分文字列を抽出できます。すべての部分文字列の終了位置が同じであるか、あるいは str の要素ごとに終了位置が異なるかを指定できます。

  • 同じ終了位置を指定するには、endPat を文字ベクトル、string スカラー、または pattern オブジェクトとして指定します。

  • 異なる終了位置を指定するには、endPat を string 配列、文字ベクトルの cell 配列、または pattern 配列として指定します。

例: extractBetween(str,"AB","YZ") は、str の各要素から ABYZ の間の部分文字列を抽出します。

例: str21 列の string 配列の場合、extractBetween(str,["AB";"FG"],["YZ";"ST"]) は、str(1) 内の ABYZ の間の部分文字列、および str(2) 内の FGST の間の部分文字列を抽出します。

開始位置。数値配列として指定します。

str が複数のテキストを含む配列の場合、startPos は、数値スカラーまたは str と同じサイズの数値配列にすることができます。

例: extractBetween(str,5,9) は、str の各要素内で 5 番目から 9 番目の位置までの部分文字列を抽出します。

例: str21 列の string 配列の場合、extractBetween(str,[5;10],[9;21]) は、str(1) の 5 番目から 9 番目の位置までの部分文字列と、str(2) の 10 番目から 21 番目の位置までの部分文字列を抽出します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

終了位置。数値配列として指定します。

str が複数のテキストを含む配列の場合、endPos は、数値スカラーまたは str と同じサイズの数値配列にすることができます。

例: extractBetween(str,5,9) は、str の各要素内で 5 番目から 9 番目の位置までの部分文字列を抽出します。

例: str21 列の string 配列の場合、extractBetween(str,[5;10],[9;21]) は、str(1) の 5 番目から 9 番目の位置までの部分文字列と、str(2) の 10 番目から 21 番目の位置までの部分文字列を抽出します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

境界の動作。'inclusive' または 'exclusive' として指定します。境界の動作が inclusive である場合、前の引数で指定した開始位置と終了位置は抽出対象のテキストに含まれます。境界の動作が exclusive である場合、開始位置と終了位置は含まれません。

出力引数

すべて折りたたむ

出力テキスト。string 配列または文字ベクトルの cell 配列として返されます。

拡張機能

バージョン履歴

R2016b で導入