首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Bloomberg期货代码中提取根、月字母、年份和黄色键。

从Bloomberg期货代码中提取根、月字母、年份和黄色键。
EN

Stack Overflow用户
提问于 2013-12-16 17:57:54
回答 3查看 1.5K关注 0票数 5

彭博( Bloomberg )的期货代码通常看上去如下:

代码语言:javascript
复制
MCDZ3 Curcny

根目录是MCD,月份字母和年份是Z3,‘黄色键’是Curcny

请注意,可以是可变长度的,2-4个字母或一个字母和一个空格(例如S H4 Comdty)。字母年只允许在expr中列出以下字母,并且可以有两位数的年份。最后,黄色键可以是几个安全类型字符串之一,但我只对(Curncy|Equity|Index|Comdty)感兴趣。

Matlab中,我有以下正则表达式

代码语言:javascript
复制
expr = '[FGHJKMNQUVXZ]\d{1,2} '; 
[rootyk, monthyear] = regexpi(bbergtickers, expr,'split','match','once');

哪里

代码语言:javascript
复制
rootyk{:}
ans = 
    'mcd'    'curncy'

代码语言:javascript
复制
monthyear = 
    'z3 '

我不想在这个月里和“”(空格)匹配。我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-16 18:09:10

假设根目录中没有前导或尾随的空格,并且只有大写字母,这应该可以:

代码语言:javascript
复制
^([A-Z]{2,4}|[A-Z]\s)([FGHJKMNQUVXZ]\d{1,2}) (Curncy|Equity|Index|Comdty)$

第一组有根,第二组是字母年,第三组是黄色键。

我不知道Matlab,也不知道它是否涵盖Perl兼容的Regex。如果失败,请尝试使用with而不是\s。另外,如果您希望从更大的源文本中提取,请删除^...$

票数 2
EN

Stack Overflow用户

发布于 2013-12-16 19:15:50

假设您只想去掉边缘的前导和后置空格,下面有一个非常简单的命令:

代码语言:javascript
复制
monthyear = trim(monthyear)

要删除所有空格,您可以:

代码语言:javascript
复制
monthyear(isspace(monthyear))=[]
票数 0
EN

Stack Overflow用户

发布于 2013-12-16 19:28:46

这里有一种完全不同的方法,基本上在您的年号之前搜索字母:

代码语言:javascript
复制
s = 'MCDZ3 Curcny'
p = regexp(s,'\d')
s(min(p)
s(min(p)-1:max(p))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20617576

复制
相关文章

相似问题

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