0

我想分割一条Simulink看起来像这样的路径:"a/b/c//d". 它应该拆分为[a,b,c/d]. 正则表达式会是什么样子?

谢谢并恭祝安康

4

1 回答 1

0

这应该可以解决问题:

>> strrep(regexp('a/b/c//d', '(([^/]|//)*)(?=/[^/]|$)', 'match'), '//', '/')
ans = 
    'a'    'b'    'c/d'

正则表达式可以理解为:第一部分匹配任何非斜线([^/])或双斜线,给出片断([^/]|//)。我们想要任意数量的这些,所以我们需要一个*,后跟一个斜杠,然后是非斜杠或字符串的结尾 ( /[^/]|$)。我们使用前瞻运算符(?= ... )来做到这一点。

strrep 是在结果中替换///。也许这可以在同一次调用中完成regexp,但是对于我的口味来说已经足够复杂了。

于 2012-08-03T12:13:36.127 回答