彭博( Bloomberg )的期货代码通常看上去如下:
MCDZ3 Curcny根目录是MCD,月份字母和年份是Z3,‘黄色键’是Curcny。
请注意,根可以是可变长度的,2-4个字母或一个字母和一个空格(例如S H4 Comdty)。字母年只允许在expr中列出以下字母,并且可以有两位数的年份。最后,黄色键可以是几个安全类型字符串之一,但我只对(Curncy|Equity|Index|Comdty)感兴趣。
在Matlab中,我有以下正则表达式
expr = '[FGHJKMNQUVXZ]\d{1,2} ';
[rootyk, monthyear] = regexpi(bbergtickers, expr,'split','match','once');哪里
rootyk{:}
ans =
'mcd' 'curncy'和
monthyear =
'z3 '我不想在这个月里和“”(空格)匹配。我该怎么做?
发布于 2013-12-16 18:09:10
假设根目录中没有前导或尾随的空格,并且只有大写字母,这应该可以:
^([A-Z]{2,4}|[A-Z]\s)([FGHJKMNQUVXZ]\d{1,2}) (Curncy|Equity|Index|Comdty)$第一组有根,第二组是字母年,第三组是黄色键。
我不知道Matlab,也不知道它是否涵盖Perl兼容的Regex。如果失败,请尝试使用with而不是\s。另外,如果您希望从更大的源文本中提取,请删除^...$。
发布于 2013-12-16 19:15:50
假设您只想去掉边缘的前导和后置空格,下面有一个非常简单的命令:
monthyear = trim(monthyear)要删除所有空格,您可以:
monthyear(isspace(monthyear))=[]发布于 2013-12-16 19:28:46
这里有一种完全不同的方法,基本上在您的年号之前搜索字母:
s = 'MCDZ3 Curcny'
p = regexp(s,'\d')
s(min(p)
s(min(p)-1:max(p))https://stackoverflow.com/questions/20617576
复制相似问题