我想分割一条Simulink看起来像这样的路径:"a/b/c//d". 它应该拆分为[a,b,c/d]. 正则表达式会是什么样子?
谢谢并恭祝安康
这应该可以解决问题:
>> strrep(regexp('a/b/c//d', '(([^/]|//)*)(?=/[^/]|$)', 'match'), '//', '/')
ans =
'a' 'b' 'c/d'
正则表达式可以理解为:第一部分匹配任何非斜线([^/])或双斜线,给出片断([^/]|//)。我们想要任意数量的这些,所以我们需要一个*,后跟一个斜杠,然后是非斜杠或字符串的结尾 ( /[^/]|$)。我们使用前瞻运算符(?= ... )来做到这一点。
strrep 是在结果中替换//为/。也许这可以在同一次调用中完成regexp,但是对于我的口味来说已经足够复杂了。