2012-08-11 60 views
3

給出了一個字符串的單元格數組,我想要構建一個regexprep規則,以便不同的字符串類型被一定數量的替換。即:matlab regexprep具有多個數字的多個字符串

my_cell = {'ok', 'ok', 'bad', 'broken', 'bad', 'broken', 'ok'}; 

我知道如何替換每個字符串類型一個接一個,即:

my_cell = regexprep(my_cell,'ok$','1'); 

,但我非常希望建立一個規則,讓ok1被替換,bad將被替換爲0broken將替換爲-1

有關如何做到這一點的任何提示?

回答

2

有文檔瀏覽:http://www.mathworks.co.uk/help/techdoc/ref/regexprep.html

它給人的語法爲:s = regexprep('str', 'expr', 'repstr')

它還說:「如果兩個EXPR和repstr是字符串單元陣列,那麼expr和repstr必須包含相同數量的元素,並且regexprep將每個repstr元素與其在expr中的匹配元素配對。「

因此,你可以嘗試這樣的事:

my_cell = regexprep(my_cell, {'^ok$', '^bad$', '^broken$'}, {'1', '0', '-1'}); 

(未經測試)

+0

這個例子不起作用,因爲在第一個正則表達式之後,你將'broken'改爲'br1ken'。 – Mehrwolf 2012-08-11 19:47:59

+0

@Mehrwolf:謝謝,糾正。我確實說過這是未經測試的! – MRAB 2012-08-11 19:55:28

3

如何:

>> my_cell = regexprep(my_cell,{'ok$','bad$','broken$'},{'1','0','-1'}); 
+0

我沒加一個''^因爲它不是在這種情況下需要。 – AGS 2012-08-12 10:49:44