如果您只是爲每個案例創建匹配表達式並使用conditional operator,則可以這樣做。例如:
>> type1 = {'myfilename_ABC'; 'myfilename_DEF'};
>> type2 = {'myfilename_ABC=XYZ'; 'myfilename_DEF=UVW'};
>> matchExpr = 'myfilename_(\w+)=(\w+)|myfilename_(\w+)';
>> results1 = regexp(type1, matchExpr, 'tokens', 'once')
results1 =
2×1 cell array
{1×1 cell} % Each cell contains 1-by-1 results
{1×1 cell}
>> results2 = regexp(type2, matchExpr, 'tokens', 'once')
results2 =
2×1 cell array
{1×2 cell} % Each cell contains 1-by-2 results
{1×2 cell}
注意,我放置的時間越長匹配表達式(myfilename_(\w+)=(\w+)
)之前較短一個(myfilename_(\w+)
),使得它會嘗試匹配較長的第一。我還使用了'once'
option(爲了使每個輸入的表達式只匹配一次)到remove an extra layer of cell encapsulation。
組數在模式中設置,您只能使用一些後處理來擺脫不需要的列。 –
您可以使用''myfilename_ | =''[split](https://www.mathworks.com/help/matlab/ref/regexp.html#btqcpjk-4)並忽略第一個(空的)結果。 – Steve