regex - MATLAB 2012 正则表达式

标签 regex matlab string-parsing

我有一组要在 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/

相关文章:

powershell - 从日志文件中提取值

regex - MS Word 中删除方括号的正则表达式

c++ - std::regex 在字符串中的括号内查找单词,然后替换它(和括号)

java - 如何在 java 中使用正则表达式检查电子邮件地址中是否只有一个 '@' 符号?

arrays - MATLAB:如何找到长度大于阈值的单元格的索引?

matlab - 云计算和 MATLAB

regex - 有没有办法在 idris lightyear 库中编写 chainl 函数?

matlab - 两个向量之间的欧氏距离(单行矩阵)

c# - 尽可能长地匹配固定列的行

sql - 从组合字符串中获取组最大值