我有以下字符串:
{'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'在字符串的开头和结尾处,表示它是一个字符串。
答案 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')