我有这个网址
/home/5/test/1/user/[*]/[a,b,c/[*]/d,e/[*]/f/[1,2,3,4]/[g,h,i]]
我想要的输出是
/home/5/test/1/user/[*]/a
/home/5/test/1/user/[*]/b
/home/5/test/1/user/[*]/c/[*]/d
/home/5/test/1/user/[*]/c/[*]/e/[*]/f/[1,2,3,4]/g
/home/5/test/1/user/[*]/c/[*]/e/[*]/f/[1,2,3,4]/h
/home/5/test/1/user/[*]/c/[*]/e/[*]/f/[1,2,3,4]/i
/home
是关键,/5
是其值。像这样我们正在寻找配对。如果找不到一对,则网址会中断。因此/test
的值为/1
,/user
的值为/[*]
。下一个斜杠有一个开括号,其中a
是一个键,它没有值,因为后面没有斜杠,所以字符串断开并给我们第一个输出行。 b
虽然没有值,但c
的值为/[*]
,所以我们保留该值并转到下一个e
和值/[*]
然后我们将它添加到我们的字符串中,依此类推,直到我们结束。我们试图只保留好的密钥和配对值,而不是那些破坏的值。在我开始考虑如何做到这一点之前..我想知道它是否可以在正则表达式中完成?使用\[([\S\s]*)\]
可以解决我在查找右括号中的问题,但是在正则表达式中是否可以有一个完整的解决方案?如果没有那么我怎么能实现这个目标?欣赏任何类型的回应。
答案 0 :(得分:0)
如果我理解正确,那么你需要的正则表达式是:
/home/5/test/1/user/\d+/[abc]/\d+/[de]/\d+/f/[1-4]/[ghi]
虽然我的问题仍然让我感到困惑。例如,字符串:/home/5/test/1/user/2/a/3/d
是否匹配?在上面的正则表达式中它会,但我不清楚你想要什么。