String MATLAB:简单字符串分析-查找位置
这里我有一篇文献的例子,我想对它做一个简单的分析。请注意不同的部分:String MATLAB:简单字符串分析-查找位置,string,matlab,datatable,find,location,String,Matlab,Datatable,Find,Location,这里我有一篇文献的例子,我想对它做一个简单的分析。请注意不同的部分: str = "Random info - at beginning-man. "+ ... "Random info still continues. "+ ... "CHAPTER 1. " + ... "Random info in middle one, "+ ... &qu
str = "Random info - at beginning-man. "+ ...
"Random info still continues. "+ ...
"CHAPTER 1. " + ...
"Random info in middle one, "+ ...
"Random info still continues. "+ ...
"1 This is sentence one of verse one, "+ ...
"This still sentence one of verse one. "+ ...
"2 This is sentence one of verse two. "+ ...
"This is sentence two of verse two. "+ ...
"3 This is sentence one of verse three; "+ ...
"this still sentence one of verse three. "+ ...
"CHAPTER 2. " + ...
"Random info in middle two. "+ ...
"Random info still continues. "+ ...
"1 This is sentence four? "+ ...
"2 This is sentence five, "+ ...
"3 this still sentence five but verse three!"+ ...
"Random info at end's end."+ ...
"Random info still continues. ";
我感兴趣的是,所有数据都可以被称为“中间的随机信息”,在章节名称之后,在诗句开始之前
我想使用函数“extractBetween”来提取在“CHAPTER#”和“1”(第一节)之间找到的信息
我知道如何使用函数“extractBetween”,但对于任何数量的章节,如何确定“CHAPTER#”之前和“1”(第一节)之后的位置
最后,我想给出这样一个答案,其中每个章节的随机信息分配在一个表中:
我尝试了regexp()和findstr(),但没有成功。
一切帮助都将不胜感激。谢谢 可以使用正则表达式与匹配文本
[tokens, matches] = regexp(str, '(CHAPTER \d)\.\s*(.*?)1', 'tokens', 'match');
for k = 1:numel(tokens)
fprintf('%s\t%s\n', tokens{k}(1), tokens{k}(2));
% or: fprintf('%s\t%s\n', tokens{k});
end
将打印
CHAPTER 1 Random info in middle one, Random info still continues.
CHAPTER 2 Random info in middle two. Random info still continues.
要解释正则表达式(第\d章)\.\s*(.*)1
:
将CHAPTER与任何数字匹配,并且围绕它的()括号将捕获(CHAPTER\d)
变量中的匹配项标记
与句点匹配\。
匹配任何可能的空白\s*
将捕获任何文本,直到文本中的下一个1。请注意问号,使其匹配lazy,否则它将匹配所有文本,直到(.*)1
中的最后一个1str
“第1章”+…
之后的两行代码时,我遇到了问题。请告诉我您是否希望我打开一个新问题?