2014-09-09 2 views
0

У меня есть следующая строка:Проверка и вырезать строку, используя регулярное выражение в MATLAB

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

Я хотел бы проверить формат строки, что слово «переменная» является вторым словом и я хотел бы вытащите строку после последней «/» в третьей строке (в этом примере «D_foo»).

Как я могу проверить это и получить поиск янта?

Я попытался следующие:

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

без успеха

Замечание

Строка для анализа не расщепляется после Komma, это только из-за длины строки.

EDIT

моя строка:

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

и не клетка, которая может быть понята. Я добавил sybol 'в начале и конце строки, чтобы символизировать, что это строка.

ответ

1

Я понимаю, что вы упоминаете, используя регулярное выражение в вопрос, но я не уверен, что это требование? Если приемлемы другие решения, вы можете попробовать следующее:

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') 
+0

Нет, мне не нужно делать с регулярным выражением. Я надеюсь, что смогу сделать это с двумя строками кода вместо 4. (Verifing and split). Пустота тем меньше, ваше решение решает мою проблему, и за это я благодарен. – Eagle

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.