层次路径RegExp



我必须使用正则表达式从层次路径中删除一个已知的"级别"。换句话说,我想从"a/b/X/c/d"到"a/b/c/d",其中X可以位于路径的任何级别。

以Javascript为例,我编写了如下代码:

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

当X是根或在路径中间时,它工作得很好,但是当X在路径中最后出现时,它会留下一个尾斜杠。我可以做一个后续的替换来处理这些实例,但是有可能创建一个更好的匹配所有情况的RegEx吗?

谢谢。

Edit:澄清一下,路径的所有关卡可能包含任意数量的字符,我只对删除一个关卡感兴趣,只有当它完全匹配X

Search: bX/|/X(?=$)

替换:空字符串

中的Regex演示,请参见底部的替换。

输入

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,如果前面的(?=$)可以断言后面的内容是字符串
  • 的结尾

最新更新