从Bloomberg期货股票代码中提取根,月份字母和黄色密钥

Ole*_*leg 5 regex matlab bloomberg

彭博期货的股票代码通常如下:

MCDZ3 Curcny
Run Code Online (Sandbox Code Playgroud)

根是MCD,月份字母和年份是Z3,而"黄键"是Curcny.

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

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

expr = '[FGHJKMNQUVXZ]\d{1,2} '; 
[rootyk, monthyear] = regexpi(bbergtickers, expr,'split','match','once');
Run Code Online (Sandbox Code Playgroud)

哪里

rootyk{:}
ans = 
    'mcd'    'curncy'
Run Code Online (Sandbox Code Playgroud)

monthyear = 
    'z3 '
Run Code Online (Sandbox Code Playgroud)

我不想在月中匹配''(空格).我能怎么做?

svo*_*oop 2

假设根中没有前导或尾随空格且只有大写字母,则这应该有效:

^([A-Z]{2,4}|[A-Z]\s)([FGHJKMNQUVXZ]\d{1,2}) (Curncy|Equity|Index|Comdty)$
Run Code Online (Sandbox Code Playgroud)

你在第一组中找到了根音,在第二组中找到了字母年份,在第三组中找到了黄键。

我不知道 Matlab 也不知道它是否涵盖 Perl 兼容正则表达式。如果失败,请尝试使用例如代替\s。另外,^...$如果您想从更大的源文本中提取内容,请删除 。