2012-06-19 38 views
0

好吧,這可能很容易,但我不經常使用matlab,無法縫合以獲得正確的結果。如何在matlab中替換逗號除了特定情況以外的所有實例

我想要做的就是將可能的文本行中的所有逗號替換爲逗號。

即:

"3","0.998652","10.1.3.2","10.1.2.3","TCP","[TCP Port numbers reused] 49153 > 10 [SYN] Seq=4294967295 Win=65535 Len=0" 
"4","1.002860","10.1.2.3","10.1.3.2","TCP","10 > 49153 [SYN, ACK] Seq=0 Ack=0 Win=65535 Len=0" 

在上面的線,你可以看到一個逗號,幾乎每一次出現由引號(「」)包圍。我想要做的就是讓它們進入,但是用Matlab來替換所有未被引號包圍的逗號的空格。

這是我想要的。 即:

"3","0.998652","10.1.3.2","10.1.2.3","TCP","[TCP Port numbers reused] 49153 > 10 [SYN] Seq=4294967295 Win=65535 Len=0" 
"4","1.002860","10.1.2.3","10.1.3.2","TCP","10 > 49153 [SYN ACK] Seq=0 Ack=0 Win=65535 Len=0" 

注意唯一的區別是在[SYN ACK]部分中的逗號被去除。

我已經嘗試了很多東西,但到目前爲止唯一已經工作的東西就是這樣的。

a= '"4","1.002860","10.1.2.3","10.1.3.2","TCP","10 > 49153 [SYN, ACK] Seq=0 Ack=0 Win=65535 Len=0"' 
str = regexprep(a,'","','1234567890') 
str = regexprep(str,',','') 
str = regexprep(str,'1234567890','","') 

不用說,這是遠遠不是最佳,並會感謝任何想法。一些要注意的事情,我試過的一些功能沒有縫隙來識別報價(不記得哪個脫手)

在此先感謝!

回答

1

regexprep是要走的路,你只需要確保只能更換逗號(通過使用$1比賽佔位符放回比賽的側翼部分。

a= '"4","1.002860","10.1.2.3","10.1.3.2","TCP","10 > 49153 [SYN, ACK] Seq=0 Ack=0 Win=65535 Len=0"' 

%# replace commas that are neither preceded nor followed by commas 
regexprep(a,'([^"]),([^"])','$1$2') 

ans = 

"4","1.002860","10.1.2.3","10.1.3.2","TCP","10 > 49153 [SYN ACK] Seq=0 Ack=0 Win=65535 Len=0" 
+0

這個工作太棒了!要容易得多並且比我臃腫的解決方案更好。謝謝! – Dave

相關問題