我有一个a b/c\/d\/e/f
形式的字符串。我正在尝试在未转义的正斜杠上拆分字符串。
到目前为止,我有此正则表达式(?:[^\\/])/
。但是,它消耗/
之前的最后一个字符。因此,如果我要用“#”代替拆分,则字符串看起来像a #c\/d\/#f
。在拆分的情况下,我将字符串分开,最后一个字符被消耗掉了。
我尝试使用一个非捕获组,但这似乎也不起作用。用javascript做到这一点。
答案 0 :(得分:1)
您可以在JS中使用此正则表达式在/
之前返回所有匹配项,而忽略所有转义的大小写,即\/
。此正则表达式还处理\
也被转义为\\
的情况。
/[^\\\/]*(?:\\.[^\\\/]*)*(?=\/|$)/gm
const regex = /[^\\\/]*(?:\\.[^\\\/]*)*(?=\/|$)/gm
const str = `\\\\\\\\\\\\/a b/c\\/d\\\\/e\\\\\\/f1/2\\\\\\\\\\\\\\/23/99`;
let m = str.match(regex).filter(Boolean)
console.log(m)
.filter(Boolean)
用于过滤空匹配项。