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