使用matlab中的regexp验证并剪切字符串

时间:2014-09-09 13:19:38

标签: regex matlab

我有以下字符串:

{'output',{'variable','VGRG_Pos_Var1/Parameters/D_foo'},'date',734704.60904050921}

我想验证单词'变量'的字符串格式。是第二个单词,我想在最后一个' /'之后重新检索字符串。在第3个字符串中(在此示例中' D_foo')。

我怎么能验证这一点并重温我搜索的刺痛?

我尝试了以下内容:

regexp(str,'{''\w+'',{''variable'',''([(a-z)|(A-Z)|/|_])+')

没有成功

REMARK

要分析的字符串在komma之后没有被分割,这只是由于字符串的长度。

修改

我的字符串是:

'{''output'',{''variable'',''VGRG_Pos_Var1/Parameters/D_foo''},''date'',734704.60904050921}';

而不是可以理解的细胞。我添加了sybol'在字符串的开头和结尾处,表示它是一个字符串。

2 个答案:

答案 0 :(得分:1)

要回答问题的第一部分,您可以写下:

str = {'output',{'variable','VGRG_Pos_Var1/Parameters/D_foo'},'date',734704.60904050921};
temp = str(2); %this holds the cell containing the two strings
if cmpstr(temp{1}(1), 'variable') 
   %do stuff
end

对于第二部分,您可以这样做:

str = {'output',{'variable','VGRG_Pos_Var1/Parameters/D_foo'},'date',734704.60904050921};
temp = str(2); %like before, this contains the cell
temp = temp{1}(2); %this picks out the second string in the cell
temp = char(temp); %turns the item from a cell to a string
res = strsplit(temp, '/'); %splits the string where '/' are found, res is an array of strings
string = res(3); %assuming there will always be just 2 '/'s. 

答案 1 :(得分:1)

我意识到你提到在问题中使用正则表达式,但是#39;我不确定这是否是一个要求?如果其他解决方案可以接受,您可以试试这个:

str='{''output'',{''variable'',''VGRG_Pos_Var1/Parameters/D_foo''},''date'',734704.60904050921}';
parts1=textscan( str, '%s','delimiter',{',','{','}'},'MultipleDelimsAsOne',1);
parts2=textscan( parts1{1}{3}, '%s','delimiter',{'/',''''},'MultipleDelimsAsOne',1);

string=parts2{1}{end}
match=strcmp(parts1{1}{2},'variable')