我必须使用正则表达式从层次路径中删除一个已知的"级别"。换句话说,我想从"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
,如果前面的(?=$)
可以断言后面的内容是字符串 的结尾