【问题标题】:Can you use matlab dynamic regular expressions to define a named token based on a previously captured token?您可以使用 matlab 动态正则表达式根据先前捕获的令牌定义命名令牌吗?
【发布时间】:2022-08-10 03:40:51
【问题描述】:

我想尝试解析一个使用先前捕获的命名标记的结构,并将该标记中的名称用作另一个标记的名称。那可能吗?

例如,对于字符串foo:bar,我想将标记field 捕获为foo,并将标记foo 捕获为bar

我认为它应该看起来像这样:

data = regexp(text,\'(?<field>\\w+)...((??\\?\\<$<field>\\>[^;]));\',\'names\');

但到目前为止,我还没有成功。

  • 也许只是\'(?<field>\\w+):(?<foo>\\w+)\'
  • 不过这个想法是有多个这样的行,而不仅仅是 foo。一个可能是 foo:bar,另一个 fizz:buzz 等,它们都在我正在阅读的同一个文件中,所以它基本上需要是一个单一的动态表达式
  • 那么这是不可能的。
  • 听起来你只是让你的代码更复杂。将您的代码和数据分开。字符串 \"foo\" 是数据,不要试图通过在其后命名标记来将其放入代码中。
  • 这是一个一次性程序,可帮助我组织一些需要更长时间手工完成的事情,不会重复进行

标签: regex matlab


【解决方案1】:

我建议首先使用 split 拆分字符串

splt_str = split('foo:bar', ':'); 

然后,使用分隔的字符串来填充结构

data.(splt_str{1}) = splt_str{2};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多