我有一组我想在MATLAB 2012中解析的字符串,它们都具有以下格式:
string-int-int-int-int-string
我想要拔出第三个整数(其余的都是“不关心”),但我还没有使用MATLAB,需要刷新正则表达式。我尝试使用正则表达式'(.*)-(.*)-(.*)-\d-(.*)'
,但没有骰子。我确实查看了MATLAB regexp page,但无法弄清楚如何将这些信息应用于此案例。
任何人都知道如何获得理想的结果?如果是这样,你能解释一下你正在使用的表达方式是什么来获得结果,以便其他人可以将答案应用于他们独特的情况吗?
提前致谢!
答案 0 :(得分:5)
^.*?-.*?-.*?-(\d+)-.*?-.*?$
或强>
^(?:[^-]*?-){3}(\d+)(?:.*?)$
Group1现在包含您所需的数据
答案 1 :(得分:5)
str = 'XyzStr-1-2-1000-56789-ILoveStackExchange.txt';
[tok] = regexp(str, '^.+?-.+?-.+?-(\d+?)-.+?-.+?', 'tokens');
tok{:}
ans =
'1000'
<强>更新强>
根据要求说明。
^
- “锚点”,或匹配字符串的开头。.+?
- 通配符匹配,一个或多个,非贪婪。-
- 文字短划线/连字符。(\d+?)
- 数字匹配,一个或多个,非贪婪,被捕获到令牌中。