extractBetween
提取起点和终点之间的子字符串
语法
说明
示例
选择子字符串之间的文本
创建字符串数组,并选择出现在子字符串之间的文本。
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'}
输入参数
str
— 输入文本
字符串数组 | 字符向量 | 字符向量元胞数组
输入文本,指定为字符串数组、字符向量或字符向量元胞数组。
startPat
— 标记开始位置的文本或模式
字符串数组 | 字符向量 | 字符向量元胞数组 | pattern
数组(自 R2020b 开始提供)
标记要提取的文本的开始位置的文本或模式,指定为下列项之一:
字符串数组
字符向量
字符向量元胞数组
pattern
数组(自 R2020b 开始提供)
如果 str
是字符串数组或字符向量元胞数组,则可以从 str
的每个元素中提取子字符串。您可以指定子字符串在 str
的每个元素中都有相同的开头,或不同的开头。
要指定相同的开头,请将
startPat
指定为字符向量、字符串标量或pattern
对象。要指定不同开头,请将
startPat
指定为字符串数组、字符向量元胞数组或pattern
数组。
示例: extractBetween(str,"AB","YZ")
提取介于 str
的每个元素中的 AB
和 YZ
之间的子字符串。
示例: 如果 str
是一个 2
×1
字符串数组,则 extractBetween(str,["AB";"FG"],["YZ";"ST"])
提取 str(1)
中介于 AB
和 YZ
之间以及 str(2)
中介于 FG
和 ST
之间的子字符串。
endPat
— 标记结束位置的文本或模式
字符串数组 | 字符向量 | 字符向量元胞数组 | pattern
数组(自 R2020b 开始提供)
标记要提取的文本的结束位置的文本或模式,指定为下列项之一:
字符串数组
字符向量
字符向量元胞数组
pattern
数组(自 R2020b 开始提供)
如果 str
是字符串数组或字符向量元胞数组,则可以从 str
的每个元素中提取子字符串。您可以指定子字符串在 str
的每个元素中都有相同的结尾,或有不同的结尾。
要指定相同的结尾,请将
endPat
指定为字符向量、字符串标量或pattern
对象。要指定不同的结尾,请将
endPat
指定为字符串数组、字符向量元胞数组或pattern
数组。
示例: extractBetween(str,"AB","YZ")
提取介于 str
的每个元素中的 AB
和 YZ
之间的子字符串。
示例: 如果 str
是一个 2
×1
字符串数组,则 extractBetween(str,["AB";"FG"],["YZ";"ST"])
提取 str(1)
中介于 AB
和 YZ
之间以及 str(2)
中介于 FG
和 ST
之间的子字符串。
startPos
— 开始位置
数值数组
开始位置,指定为数值数组。
如果 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
endPos
— 结束位置
数值数组
结束位置,指定为数值数组。
如果 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
bounds
— 边界行为
'inclusive'
| 'exclusive'
边界行为,指定为 'inclusive'
或 'exclusive'
。当边界行为是 inclusive(包含)时,由前面的参量指定的起点和终点将包含在提取的文本中。如果边界行为是 exclusive(不包含),则不包含起点和终点。
输出参量
newStr
— 输出文本
字符串数组 | 字符向量元胞数组
输出文本,以字符串数组或字符向量元胞数组形式返回。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
startPat
和endPat
必须为字符串数组、字符向量或字符向量元胞数组。
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2016b 中推出
另请参阅
split
| join
| erase
| eraseBetween
| extract
| extractBefore
| extractAfter
| insertAfter
| insertBefore
| replace
| replaceBetween
| strlength
| count
| pattern
| wildcardPattern
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)