用//分割simulink路径。

时间:2012-08-03 09:30:12

标签: regex matlab path split simulink

我想分割一个Simulink路径,如下所示:"a/b/c//d"。它应该分成[a,b,c/d]。正则表达式怎么样?

谢谢和问候

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

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

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

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