【问题标题】:How to use regexp for splitting string with complex delimiter in Matlab?如何在 Matlab 中使用正则表达式拆分带有复杂分隔符的字符串?
【发布时间】:2017-08-12 13:32:19
【问题描述】:

我有一个这样的字符串:

"%","W/m²","mm","Deg C","%","W/m²","MJ/m²","","uSec","","uSec","","uSec"

我想根据一个复杂的分隔符来拆分它:每个项目都以连字符(左右)为界并用逗号分隔。

备注:

  • 包括百分比或 2 的幂等字符,应读入。在我的示例中,我列出了 13 个项目(3 个空白)。
  • Empy 字段(项目)也应包含(不丢弃)并替换为字符串“无单位”
  • 项目还可以包含空格(“Deg C”)

谁能帮帮我?

【问题讨论】:

  • 欢迎来到 Stack Overflow,请花点时间通过 the welcome tour 了解您在这里的道路(同时也获得您的第一个徽章),阅读如何 create a Minimal, Complete, and Verifiable example 并查看 @987654323 @ 这样您就可以增加获得反馈和有用答案的机会。
  • 不是每个项目都用双引号括起来吗?不是连字符?你必须使用正则表达式吗?有一种更简单的方法,无需使用。

标签: regex string matlab delimiter


【解决方案1】:

还有其他方法可以实现这一点,但 regexp 应该这样做。出于速度和兼容性的原因,我更喜欢 regexp('split') 而不是 strsplit。后者相对较新。

str = '"%","W/m²","mm","Deg C","%","W/m²","MJ/m²","","uSec","","uSec","","uSec"';
units = regexp(str, ',', 'split'); % split by comma
units = regexp(units, '(?<=").*(?=")', 'match', 'once'); % get content between quotes
units(cellfun(@isempty, units)) = {'unitless'}; % set empty to unitless

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多