正则表达式中的可选参数

1 投票
2 回答
11521 浏览
提问于 2025-04-16 14:42

我想用正则表达式让几个参数变成可选的。

现在我的网址是:

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" 这个子模式周围有 (...)? 这样的写法。

撰写回答