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

如何为多个组编写REGEXP?(MATLAB),regex,matlab,strsplit,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'neutral

我试图在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”,然后是“New-trial”和一个变量字符串,即(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');
我尝试过这个正则表达式的多种变体,但我一直得到一个包含整个文件的单个单元格数组作为字符串。有人能给我一个指针,说明如何为包含多个组的字符串编写正则表达式吗

谢谢, 阴暗的

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


我对你的黑魔法感到非常惊讶!你能解释一下这个表达式的作用吗:(?:\。\d+)?这个演示非常棒,但我不理解它的解释。@seldamat
?:
只是一个不吸引人的群体。
(?:\。\d+)?
是为了使deimal部件成为可选部件。因此,只有
43
43.3434
匹配。非常感谢!Regex101太棒了-你不知道你让我的生活变得多么轻松。
\d+(?:\.\d+)?\s+EXP\s+New\strial\s\([^)]*\):\s+{[^}]+}