将正则表达式匹配的值存储在变量中

Store value of regex match in a variable

我有一个包含时间戳和一些随机字符的字符串。例如,str = "11:05:46 some random text here",我只想获取时间戳并使用正则表达式将其存储在变量中。

时间戳格式的正则表达式是

\d{2}:\d{2}:\d{2}

我在 Matlab 上使用正则表达式是这样的:

timestamp = regexp(str,expression)

其中 str 是 "11:05:46 some random text here",表达式是 '\d{2}:\d{2}:\d{2}',但它返回索引 (1) 而不是值本身 (11:05:46)。

在 Matlab 上有没有一种方法可以在值与正则表达式匹配时获取值并将其存储在变量中?预期输出:11:05:46

或者有什么方法可以只匹配除时间戳以外的所有内容吗?预期输出:这里有一些随机文本

您需要将 'match' 作为第三个参数传递给 regexp 函数:

timestamp = regexp(str,expression, 'match')

输出:

timestamp =
{
  [1,1] = 11:05:46
}

'match' 参数使 Matlab 输出 与表达式中的模式匹配的每个子字符串的文本 ,参见 documenation

使用 regexprep 您可以删除字符串开头的时间戳以 return 剩下的所有内容:

>> regexprep(str,expression,'')
ans =  some random text here