3

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

string-int-int-int-int-string

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

任何人都知道我怎样才能得到想要的结果?如果是这样,您能否解释一下您正在使用什么表达来获得该结果,以便其他人可以将答案应用于他们的独特情况?

提前致谢!

4

2 回答 2

5
^.*?-.*?-.*?-(\d+)-.*?-.*?$

或者

^(?:[^-]*?-){3}(\d+)(?:.*?)$

Group1 现在包含您所需的数据

于 2012-10-26T16:54:45.450 回答
5
str = 'XyzStr-1-2-1000-56789-ILoveStackExchange.txt';

[tok] = regexp(str, '^.+?-.+?-.+?-(\d+?)-.+?-.+?', 'tokens');

tok{:}
ans = 
    '1000'

更新

解释,根据要求。

  • ^- “锚”,或匹配字符串的开头。
  • .+?- 通配符匹配,一个或多个,非贪婪。
  • -- 文字破折号/连字符。
  • (\d+?)- 数字匹配,一个或多个,非贪婪,捕获到一个令牌中。
于 2012-10-26T17:43:06.823 回答