0
我试图匹配的模式是一些字符(字母+数字+连字符(-)
),然后是5位数字,然后是9位数字。图案的每个部分用连字符分隔(-)
5位和9位部分是可选的,意思是其中一个可能存在,而其他可能不存在或可能两者都存在或可能都不存在。因此,模式可以是这样的这个正则表达式有什么问题
bla-12-bla-98-bla-12345-123456789 all parts(characters+5-digit+9-digit)
bla-bla-123-12345 9-digit part absent
blasd-123456789 5-digit part absent
no-1045-numeric-bla-bla both numeric parts absent
我想出了一个正则表达式是这个
.+(\d{5})?-?(\d{9})?$
的理由上面是这样的。由于开头的.+
与所有字符匹配,因此(\d{5})?
表示可能有0或1个5位数字部分的实例,从而使其成为可选项。
对于-?
,如果两个数值部分不存在,则有woudnt是任何-
但如果两个数字部分都存在,那么将有1 -
所以我再次使其可选。
类似地对于(\d{9})?
。
但上述模式不匹配任何东西。我正在使用Python,所以group(1)
和group(2)
返回None
。
上面有什么问题?
嘿谢谢。它的作品。但你不需要逃避那个连字符。 – lovesh
你说得对。我以某种方式养成了在正则表达式中转义所有特殊字符的习惯,因为它倾向于工作,我不必担心我必须逃脱;-) –
如果你在意哪些字符串在前面,你也可以做懒惰评估数字,例如把'。+?'放在你的正则表达式中。 – devsnd