2014-07-11 227 views
0

給定一個字符串'12.39 ert_23::ex::status = 12'。格式始終是時間後跟一個字符串。我想分割時間,即12.39和剩下的字符串。我已經使用regexp,但無法達到我所需要的。分割數字和字符串matlab

str_in = '12.39 ert_23::ex::status = 12'; 
str_out = regexp(str_in,'\d+(\.\d+)? \w*','split'); 

預期出來是

str_out = '12.39' ' ert_23::ex::status = 12' 
+0

如果它總是遵循相同的格式,你也可以硬編碼它'str_out = {str_in(1:5),str_in(7:end)};' – Sifu

回答

2

一種不同的方法:

>> C = textscan(str_in, '%f %s', 'Delimiter','') 
C = 
    [12.3900] {1x1 cell} 

>> celldisp(C) 
C{1} = 
    12.3900 
C{2}{1} = 
ert_23::ex::status = 12 

注意,第一部分是分析並返回一個數字。

+1

+1這樣你確實可以避免[two問題](http://regex.info/blog/2006-09-15/247) – damienfrancois

+0

有趣的閱讀,謝謝你的鏈接:) – Amro

2

這個怎麼樣?

ind = regexp(str_in,'\d+(\.\d+)','end'); 
str_out = {str_in(1:ind), str_in(ind+1:end)}; 
+1

如果空間在第二部分的細胞,而不是數字。 –

+0

更正,謝謝! –

2

如何:

>> regexp(str_in,'(\d+(?:\.\d+)?) (.*)','tokens', 'once') 

ans = 

    '12.39' 'ert_23::ex::status = 12' 

>> 
+0

+1我不記得有關「令牌」的選項。更乾淨! –

+1

add'regexp(..,'tokens','once')'擺脫嵌套單元格 – Amro

+0

@Amro謝謝我更新我的回答 – damienfrancois