正则表达式中的可选参数
我想用正则表达式让几个参数变成可选的。
现在我的网址是:
http://[ipaddress]/StoreData/10/20/30/40/50
因为有5个数字参数,有时候我想要4个,有时候想要5个。
比如说: http://[ipaddress]/StoreData/10/20/30/40
这样的格式也应该可以接受。
这是我的正则表达式:
(?P<dataone>([0-9])+)/(?P<datatwo>([0-9])+)/(?P<datathree>([0-9])+)/(?P<datafour>([0-9])+)/(?P<datafive>([0-9])+)/
2 个回答
0
StoreData/(?P<dataone>([0-9])*)/(?P<datatwo>([0-9])*)/(?P<datathree>([0-9])*)/(?P<datafour>([0-9])*)/?(?P<datafive>([0-9])*)/?$
这就是需要的正则表达式。如果需要的话,要对正则表达式进行转义。
为了回答Petri Lehtinen和Lasse V. Karlsen,这个正则表达式也能处理结尾的反斜杠。
5
这个 ?
修饰符的作用是让正则表达式中的某一部分变成可选的,也就是说这部分可以出现,也可以不出现。
(?P<dataone>([0-9])+)/(?P<datatwo>([0-9])+)/(?P<datathree>([0-9])+)/(?P<datafour>([0-9])+)/((?P<datafive>([0-9])+)/)?
注意在 "datafive" 这个子模式周围有 (...)?
这样的写法。