首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测较大字符串中的大写字母字符串

检测较大字符串中的大写字母字符串
EN

Stack Overflow用户
提问于 2012-01-24 11:53:58
回答 1查看 6K关注 0票数 0

在matlab中,有没有一种既好又干净的方法可以在一个较大的字符串中找到长度为2-4的大写字母串。例如,假设我有一个字符串...

代码语言:javascript
复制
 stringy = 'I imagine I could FLY';

有没有一种很好的方法来提取字符串的FLY部分?目前,我使用in ()函数来标识字符串中的所有大写字符,如下所示……

代码语言:javascript
复制
 for count = 1:length(stringy)
     if upper(stringy(count))==stringy(count)
          isupper(count)=1;
     else
          isupper(count)=0;
     end
 end

然后,我只需遍历二进制向量,并确定该行中何时有2-41个1。

这个方法是有效的。但我想知道有没有更干净的方法来做这件事...谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 12:12:54

为此,您可以使用正则表达式。正则表达式[A-Z]{2,4}将在字符串中搜索2-4个大写字母。

相应的matlab函数称为regexp

regexp(string,pattern)将它与pattern匹配的所有位置的子索引返回到string

对于你的模式,我有两个建议:

  1. \<[A-Z]{2,4}\>.这将搜索由2-4个大写字母组成的整个单词(因此它不会获取下面的TOUCH ):

stringy =‘我想象我可以飞起来触摸天空’;regexp(stringy,'\') %return 19,33,37 (' FLY ',' THE ','SKY')

( Matlab编辑:Matlab使用\<\>来表示单词边界,而不是标准Matlab中可以混合大小写的字符串,并且您想要提取它们,请尝试(?<![A-Z])[A-Z]{2,4}(?![A-Z]) (意思是"2-4个不用大写字母括起来的大写字母“):

stringy = 'I image I and‘;%return 17和28 ('FLY','THE') regexp(stringy,'(?<)A-Z{2,4}(?)') % note '\’不匹配此处的任何内容,因为它查找%*个大写字母组成的%*个完整单词*。% 'FLYandTouchTHEsky‘不满足这一点。

根据您希望发生的行为选择正则表达式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8981808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档