0
我想简化这个表达式。有没有更好的方式来使用查找或其他?当谈到正则表达式时,我很低级。参数3美元,5美元和7美元的参数是可选的。 $ 1是必需的。如何接受RegEx表达式中的可选参数?
^
/application/
([0-9a-zA-Z_]+)
([\/]([0-9a-zA-Z_]+))?
([/\?|\?|\/]([^\?]*))?
([\?](.*))?
$
service => $1
target => $3
args => $5
filter => $7
/application/blender/banana?add = milk。
btw使用RegExr构建和测试表达式,如果您还没有听说过它,它是一个很棒的工具。
活泉!多数民众赞成真棒=],是的,我的意思是非capt。有时候第三方会附加自己的问题?到我们的查询字符串,所以我需要一种方法来检测最后一个过滤器并将其视为一组参数。另外我不想在输出值中使用任何斜线,你的$ 2就是这样,是吗? – qodeninja 2012-01-18 20:08:49
是的。如果你不想在第二个捕获组中使用斜杠,你可以这样做:'(?:\ /([0-9a-zA-Z _] +))?'。或者,您可以在事件发生后从拍摄的文本中删除斜杠。 – MRAB 2012-01-18 23:19:27
这基本上是我以前有过!大声笑 – qodeninja 2012-01-19 22:34:45