【问题标题】:How to apply regexp to the cell array in Matlab?如何将正则表达式应用于 Matlab 中的单元格数组?
【发布时间】:2012-08-22 13:27:17
【问题描述】:

我的单元格数组 res 有 3x2 的单元格,每个单元格都包含一个字符串。我想将 regexp 应用于每个单元格,它应该如下所示:

fin = cellfun(@regexp(res, '\.', 'split'),res,'UniformOutput',false)

但是它并没有完成这项工作。有谁知道如何正确组合?

【问题讨论】:

    标签: regex matlab cell-array


    【解决方案1】:

    您在正确的轨道上,但是您的匿名函数的语法是错误的。试试这个:

    fin = cellfun(@(x)regexp(x, '\.', 'split'), res, 'UniformOutput', false)
    

    【讨论】:

    • 在较新的 MATLAB 版本中,regexp 可以自行处理元胞数组作为输入。所以不再需要真正的手机游戏了。
    • @Xerusial 感谢您的评论,很高兴知道! (因为我有一段时间没有接触 MATLAB)。但是,原始问题仍然包括cellfun...
    【解决方案2】:

    如果您有一个单元格“res”,它由数字和字符串组成,并且想在“res”的每个字符中将“a”替换为“b”,那么您应该使用以下内容:

    idx_isNumeric = @(x) any(isnumeric(x));                     
    idx_isNumeric2 = cellfun(idx_isNumeric, res);  
    res( ~idx_isNumeric2 ) = regexprep( res( ~idx_isNumeric2 ), 'a', 'b');  
    

    希望对你有帮助;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多