我有一组要在 MATLAB 2012 中解析的字符串,它们都具有以下格式:
string-int-int-int-int-string
我想取出第三个整数(其余的“无关紧要”),但我已经很久没有使用 MATLAB 了,需要刷新正则表达式。我尝试使用正则表达式 '(.*)-(.*)-(.*)-\d-(.*)'
但没有骰子。我确实检查了 MATLAB regexp page ,但无法弄清楚如何将该信息应用于此案例。
有人知道我怎样才能得到想要的结果吗?如果是这样,您能否解释一下您使用的表达式是如何获得该结果的,以便其他人可以将答案应用于他们的独特情况?
提前致谢!
最佳答案
str = 'XyzStr-1-2-1000-56789-ILoveStackExchange.txt';
[tok] = regexp(str, '^.+?-.+?-.+?-(\d+?)-.+?-.+?', 'tokens');
tok{:}
ans =
'1000'
更新
根据要求提供解释。
^
- “ anchor ”,或匹配字符串的开头。.+?
- 通配符匹配,一个或多个,非贪婪。-
- 文字破折号/连字符。(\d+?)
- 数字匹配,一个或多个,非贪婪,捕获到 token 中。
关于regex - MATLAB 2012 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091151/