我正在尝试使用正则表达式获取URI段。
示例URI:
http://abc.com/hello/hi/bye?humm/ok=hi&ya=yaya/wow/waaah
^^^^^ ^^ ^^^ ^^^ ^^^^^
我在尝试:
/(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g
但它不能正常工作。查询字符串未被排除(wow/waaah
)。
所以,当我尝试以下操作时,一切都被排除在外:
/(?<!?.+)(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g
这有什么问题?
答案 0 :(得分:1)
你忘了逃避第二个正则表达式中的第二个?
。它应该是:
/(?<!\?.+)(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g
注意:您可以通过使用如下字符类来改进正则表达式:
/(?<!\?.+)(?<=\/)[\w-]+(?=[/\r\n?]|$)/g
修改强>
对于满足所有不同风格的正则表达式的最低公分母解决方案,您需要两个步骤:
?
及所有后续字符(如果存在):
^[^/]+//[^/]+([^?]+)
保留捕获组1中返回的字符串。
/([\w-]+)
这些段在捕获组1中返回。