Main Content

extractBetween

提取起点和终点之间的子字符串

说明

示例

newStr = extractBetween(str,startPat,endPat)str 的子字符串 startPatendPat 之间提取子字符串。提取的子字符串不包括 startPatendPat

如果 str 是一个字符串数组,则 newStr 也是一个字符串数组。否则,newStr 为字符向量元胞数组。

如果 str 是一个字符串数组或字符向量元胞数组,extractBetween 将提取 str 的每个元素中的子字符串。

示例

newStr = extractBetween(str,startPos,endPos) 从出现在位置 startPosendPos 之间的 str 中提取子字符串,包括这些位置处的字符。extractBetween 将子字符串作为 newStr 返回。

示例

newStr = extractBetween(___,'Boundaries',bounds) 强制包含或不包含在上述任一语法中指定的开始和结束位置。当 bounds'inclusive' 时,包含开始和结束位置;当 bounds'exclusive' 时,不包含开始和结束位置。例如,extractBetween(str,startPat,endPat,'Boundaries','inclusive') 返回 startPatendPat 以及它们之间的所有文本作为 newStr

示例

全部折叠

创建字符串数组,并选择出现在子字符串之间的文本。

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

选择出现在子字符串 "quick "" fox" 之间的文本。extractBetween 函数选择该文本,但不在输出中包括 "quick "" fox"

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

从字符串数组的每个元素中选择子字符串。当您将不同子字符串指定为开头和结尾指示符时,它们必须包含在与 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 开始提供

创建一个由标记括起来的文本组成的字符串数组。

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

创建字符串数组,并选择指定为数字的开始和结束位置之间的子字符串。

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

选择中间名。指定字符串中第 7 个和第 11 个位置。

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

从字符串数组的每个元素中选择子字符串。当您使用数值数组指定不同的开始和结束位置时,它们必须与输入字符串数组具有相同大小。

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"

在强制包含或不包含边界的情况下从字符串数组中选择文本。如果边界为包含,则 extractBetween 包括选定文本的边界。如果边界为不包含,则 extractBetween 不包括选定文本的边界。

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

选择第 6 个和第 13 个位置之间的文本,但不包括这些位置上的字符。

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

选择两个子字符串之间的文本,包含这些子字符串本身。

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'}

输入参数

全部折叠

输入文本,指定为字符串数组、字符向量或字符向量元胞数组。

标记要提取的文本的开始位置的文本或模式,指定为下列项之一:

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组(自 R2020b 开始提供)

如果 str 是字符串数组或字符向量元胞数组,则可以从 str 的每个元素中提取子字符串。您可以指定子字符串在 str 的每个元素中都有相同的开头,或不同的开头。

  • 要指定相同的开头,请将 startPat 指定为字符向量、字符串标量或 pattern 对象。

  • 要指定不同开头,请将 startPat 指定为字符串数组、字符向量元胞数组或 pattern 数组。

示例: extractBetween(str,"AB","YZ") 提取介于 str 的每个元素中的 ABYZ 之间的子字符串。

示例: 如果 str 是一个 2×1 字符串数组,则 extractBetween(str,["AB";"FG"],["YZ";"ST"]) 提取 str(1) 中介于 ABYZ 之间以及 str(2) 中介于 FGST 之间的子字符串。

标记要提取的文本的结束位置的文本或模式,指定为下列项之一:

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组(自 R2020b 开始提供)

如果 str 是字符串数组或字符向量元胞数组,则可以从 str 的每个元素中提取子字符串。您可以指定子字符串在 str 的每个元素中都有相同的结尾,或有不同的结尾。

  • 要指定相同的结尾,请将 endPat 指定为字符向量、字符串标量或 pattern 对象。

  • 要指定不同的结尾,请将 endPat 指定为字符串数组、字符向量元胞数组或 pattern 数组。

示例: extractBetween(str,"AB","YZ") 提取介于 str 的每个元素中的 ABYZ 之间的子字符串。

示例: 如果 str 是一个 2×1 字符串数组,则 extractBetween(str,["AB";"FG"],["YZ";"ST"]) 提取 str(1) 中介于 ABYZ 之间以及 str(2) 中介于 FGST 之间的子字符串。

开始位置,指定为数值数组。

如果 str 是一个包含多段文本的数组,则 startPos 可以是与 str 具有相同大小的数值标量或数值数组。

示例: extractBetween(str,5,9) 提取 str 的每个元素中从第五个位置到第九个位置的子字符串。

示例: 如果 str 是一个 2×1 字符串数组,则 extractBetween(str,[5;10],[9;21]) 提取 str(1) 中从第五个位置到第九个位置以及 str(2) 中从第 10 个位置到第 21 个位置的子字符串。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

结束位置,指定为数值数组。

如果 str 是一个包含多段文本的数组,则 endPos 可以是与 str 具有相同大小的数值标量或数值数组。

示例: extractBetween(str,5,9) 提取 str 的每个元素中从第五个位置到第九个位置的子字符串。

示例: 如果 str 是一个 2×1 字符串数组,则 extractBetween(str,[5;10],[9;21]) 提取 str(1) 中从第五个位置到第九个位置以及 str(2) 中从第 10 个位置到第 21 个位置的子字符串。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

边界行为,指定为 'inclusive''exclusive'。当边界行为是 inclusive(包含)时,由前面的参量指定的起点和终点将包含在提取的文本中。如果边界行为是 exclusive(不包含),则不包含起点和终点。

输出参量

全部折叠

输出文本,以字符串数组或字符向量元胞数组形式返回。

扩展功能

版本历史记录

在 R2016b 中推出