如何为多个组编写REGEX? (MATLAB)

时间:2014-11-30 19:27:01

标签: regex matlab strsplit

我正在尝试在MATLAB中解析文本文档,并使用strsplit将其拆分为多个部分。每个部分都由一个如下所示的字符串划分:

483.3731    EXP     New trial (rep=0, index=1): {u'selectPlayer': 1, u'neutralStim4': u'PSYCHOLOGIST', u'neutralStim2': u'PONG', u'neutralStim': u'YEN', u'positiveStim': u'PEACEFUL', u'neutralStim3': u'DASH', u'positiveStim3': u'HAPPY', u'positiveStim2': u'HONORABLE', u'negativeStim': u'BETRAYAL', u'negativeStim4': u'GUNPOINT', u'negativeStim3': u'JEALOUS', u'negativeStim2': u'MISTRUST', u'positiveStim4': u'AWESOME'}

每个部分都包含一些数字的变体,然后是' EXP'那么'新的试验'和一个变量字符串,即(rep = 1,index = 1:{u' SelectPlayer':2,..)。

我目前有以下代码尝试解析此文档,但我无法使其工作!

expr = '\n\d+\s*EXP\s*New Trial\s*\w+\n';
filecontents = fileread('LAILA_exp1_noCBB_fMRIsync_2014_Oct_28_1239.log');
filecontents = strsplit(filecontents,expr,'DelimiterType','RegularExpression');

我尝试了这个正则表达式的多种变体,但我只是继续得到一个包含整个文件的单个单元格数组作为字符串。任何人都可以指出如何为包含多个组的字符串编写正则表达式吗?

谢谢, 黑幕

1 个答案:

答案 0 :(得分:1)

\d+(?:\.\d+)?\s+EXP\s+New\strial\s\([^)]*\):\s+{[^}]+}

您可以使用它来匹配此类字符串。请参阅演示。

http://regex101.com/r/hQ9xT1/33