【问题标题】:How to replace all instances of a comma in matlab except for a specific situation除了特定情况外,如何替换matlab中逗号的所有实例
【发布时间】:2012-06-19 01:11:10
【问题描述】:

好的,这可能很容易,但我不经常使用 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','","')

毋庸置疑,这远非最佳,如果有任何想法,我们将不胜感激。还有一点需要注意的是,我尝试过的一些功能无法识别引文(不记得是哪个手头的)

提前致谢!

【问题讨论】:

    标签: regex matlab replace comma


    【解决方案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"
    

    【讨论】:

    • 这很棒!比我臃肿的解决方案更容易和更好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多