我必须使用正则表达式从分层路径中删除已知的“级别”。 换句话说,我想从'a / b / X / c / d'变为'a / b / c / d',其中X可以在路径的任何级别。
以Javascript为例,我精心设计了以下内容:
str = str.replace(/^(?:(.+\/)|)X(?:$|\/(.+$))/, "$1$2")
当X是根或位于路径的中间时工作正常,但是当X在路径中的最后位置时留下一个尾部斜杠。我可以进行后续替换以处理这些实例,但是是否可以创建一个匹配所有情况的更好的RegEx?
感谢。
编辑:为了澄清,路径的所有级别都可能包含任意数量的字符,我只对只有匹配X才能删除级别感兴趣。
答案 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
,如果前瞻(?=$)
可以断言后面的内容是字符串的结尾