我有像
这样的网址http://localhost:8080/web/group/555/content/777/image?arg1=1&arg2=2#anchor
我试图获得3个部分:组号,内容编号和视图类型值,即& #34;图像"在上面的示例中(可以是一组预定义的值,并且保证没有带有文本的值" group"或" content")。
到目前为止,我得到了以下regexp(它有3个我需要的捕获组)
/.*(?:\/group\/([\d]+))(?:\/content\/([\d]+))\/([\w]+).*/g
仅在所有部件都存在时才有效。
问题是任何部分都可能缺席("查看类型"除外),因此下一个网址也有效:
http://localhost:8080/web/content/777/image
// which has $1="", $2="777", $3="image"
http://localhost:8080/web/nogroup/555/content/777/video
// which has $1="", $2="777", $3="video"
http://localhost:8080/web/audio
// which has $1="", $2="", $3="audio"
有没有办法告诉regexp:如果组$ 1没有匹配,则将其值设置为""?
答案 0 :(得分:0)
您需要在每个可以出现但不是匹配所必需的群组之后添加问号?
,并且会自动使用""
填充它们:
/.*(?:\/group\/([\d]+))?(?:\/content\/([\d]+))?\/([\w]+).*/g