0

好的,这可能很容易,但我不经常使用 matlab,也无法通过缝合来正确地完成此操作。

我想要做的就是在可能的文本行中替换所有出现的逗号。

IE:

"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用空格替换所有没有被引号包围的逗号。

这就是我想要的。IE:

"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','","')

不用说,这远非最佳,并且会欣赏任何想法。还有一点需要注意,我尝试过的一些功能无法识别引文(不记得是哪个手头的)

提前致谢!

4

1 回答 1

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"
于 2012-06-19T01:49:46.957 回答