使用regexp MATLAB在文本中解析数字

时间:2016-03-01 14:26:08

标签: regex matlab

在MATLAB的单元格字符串中,我有一个如下所示的字符串:

 A = {'... "precision": 0.01254,"recall": 0.2154, ... ,"precision": 0.01324,"recall": 0.25454 ... '}

其中......暗示不同的词。我想解析这个文本,并阅读“精确”和“召回”字样前面的所有数字。我考虑过为此目的使用regexp()。知道如何正确使用它吗? 谢谢

1 个答案:

答案 0 :(得分:1)

要从该长字符串中提取"precision": 0.01254"recall":0.2154,我会使用类似的内容。

正则表达式: ("precision":|"recall":)(?:\s+)?(?:\d*\.\d*)

使用的标志:

  • g进行全球搜索。

<强>解释

  • ("precision":|"recall":):此部分会搜索precision recall

  • (?:\s+)?(?:\d*\.\d*):此部分代表numerical data

Regex101 demo here.

编辑#1:

正如OP在一篇评论中提到的那样,有时数字的格式为2.8621e-6,我们只需捕获e-6部分并使其成为可选项。结果正则表达式如下。

正则表达式: ("precision":|"recall":)(?:\s+)?(?:\d*\.\d*(?:e-\d*)?)

Regex101 Demo for format of this type 2.8621e-6