Python 正则表达式中的可选参数

Python 正则表达式中的可选参数,python,regex,Python,Regex,我想使用正则表达式使几个参数成为可选的 目前我的网址是 http://[ipaddress]/StoreData/10/20/30/40/50 因为有5个编号的参数,所以有时我需要4个,有时需要5个 i、 e。 http://[ipaddress]/StoreData/10/20/30/40 应该可以接受 这是我的正则表达式 (?P<dataone>([0-9])+)/(?P<datatwo>([0-9])+)/(?P<datathree>([0-9])+)/

我想使用正则表达式使几个参数成为可选的

目前我的网址是

http://[ipaddress]/StoreData/10/20/30/40/50

因为有5个编号的参数,所以有时我需要4个,有时需要5个

i、 e。 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])+)/
(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/

修饰符使正则表达式的一部分成为可选的:

(?P<dataone>([0-9])+)/(?P<datatwo>([0-9])+)/(?P<datathree>([0-9])+)/(?P<datafour>([0-9])+)/((?P<datafive>([0-9])+)/)?
(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/?

注意“datafive”子模式周围的
(…)?

修饰符使正则表达式的一部分成为可选的:

(?P<dataone>([0-9])+)/(?P<datatwo>([0-9])+)/(?P<datathree>([0-9])+)/(?P<datafour>([0-9])+)/((?P<datafive>([0-9])+)/)?
StoreData/(?P<dataone>([0-9])*)/(?P<datatwo>([0-9])*)/(?P<datathree>([0-9])*)/(?P<datafour>([0-9])*)/?(?P<datafive>([0-9])*)/?$
(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/(?P([0-9])+)/?
请注意“datafive”子模式周围的
(…)?

存储数据/(?p([0-9])*)/(?p([0-9])*)/(?p([0-9])*)/(?p([0-9])/?(?p([0-9])/$
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的问题,它还将处理尾随的反斜杠。

StoreData/(?p([0-9])*)/(?p([0-9])*)/(?p([0-9])/(?p([0-9])/$
将是所需的正则表达式。如果需要,请退出正则表达式


为了回答Petri Lehtinen和Lasse V.Karlsen的问题,它还将处理尾随的反斜杠。

您的示例无效,因为正则表达式在结尾需要一个
/
,但示例字符串没有。如果我不使用斜杠,那么它也可以工作,啊,是的。这是因为regexp不是以
$
结尾的。您的示例是无效的,因为正则表达式的结尾需要一个
/
,但是示例字符串没有。如果我不使用斜杠,那么它也可以工作啊,是的。这是因为regexp不是以
$
结尾的。是的,这就是为什么我在注释中询问斜杠。是的,这就是为什么我在注释中询问斜杠。