我想稍微简化一下这个表达式。有没有更好的方法来使用查找或其他东西?当谈到正则表达式时,我很年轻。参数3美元,5美元和7美元的参数是可选的。需要1美元。
^
/application/
([0-9a-zA-Z_]+)
([\/]([0-9a-zA-Z_]+))?
([/\?|\?|\/]([^\?]*))?
([\?](.*))?
$
service => $1
target => $3
args => $5
filter => $7
/应用/混合器/香蕉?添加=牛奶。
btw我使用RegExr来构建和测试表达式,如果你没有听说过它,它是一个很好的工具。
答案 0 :(得分:1)
此:
([\/]([0-9a-zA-Z_]+))?
可以简化为:
(\/[0-9a-zA-Z_]+)?
和
([\?](.*))?
可以简化为:
(\?.*)?
因为+
和*
(以及?
)仅适用于前一项。
我不确定这是什么:
[/\?|\?|\/]
应该是。也许你的意思是:
(?:/\?|\?|\/)
即。 /?
或?
或/
。 ((?:...)
是非捕获组。)
这给出了:
^
/application/
([0-9a-zA-Z_]+)
(\/[0-9a-zA-Z_]+)?
((?:/\?|\?|\/)[^?]*)?
(\?.*)?
$
service => $1
target => $2
args => $3
filter => $4