分层路径RegExp

时间:2014-07-25 08:38:54

标签: regex

我必须使用正则表达式从分层路径中删除已知的“级别”。 换句话说,我想从'a / b / X / c / d'变为'a / b / c / d',其中X可以在路径的任何级别。

以Javascript为例,我精心设计了以下内容:

str = str.replace(/^(?:(.+\/)|)X(?:$|\/(.+$))/, "$1$2")

当X是根或位于路径的中间时工作正常,但是当X在路径中的最后位置时留下一个尾部斜杠。我可以进行后续替换以处理这些实例,但是是否可以创建一个匹配所有情况的更好的RegEx?

感谢。

编辑:为了澄清,路径的所有级别都可能包含任意数量的字符,我只对只有匹配X才能删除级别感兴趣。

1 个答案:

答案 0 :(得分:1)

搜索:\bX/|/X(?=$)

替换:空字符串

the Regex Demo 中,请参阅底部的替换。

<强>输入

a/b/X/c/d
X/a/b/c/d
a/b/c/d/X

<强>输出

a/b/c/d
a/b/c/d
a/b/c/d

<强>解释

  • \b断言词边界
  • X/匹配X/
  • |
  • 匹配/X,如果前瞻(?=$)可以断言后面的内容是字符串的结尾