MATLAB 2012正则表达式

时间:2012-10-26 16:52:43

标签: regex matlab string-parsing

我有一组我想在MATLAB 2012中解析的字符串,它们都具有以下格式:

string-int-int-int-int-string

我想要拔出第三个整数(其余的都是“不关心”),但我还没有使用MATLAB,需要刷新正则表达式。我尝试使用正则表达式'(.*)-(.*)-(.*)-\d-(.*)',但没有骰子。我确实查看了MATLAB regexp page,但无法弄清楚如何将这些信息应用于此案例。

任何人都知道如何获得理想的结果?如果是这样,你能解释一下你正在使用的表达方式是什么来获得结果,以便其他人可以将答案应用于他们独特的情况吗?

提前致谢!

2 个答案:

答案 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+?) - 数字匹配,一个或多个,非贪婪,被捕获到令牌中。