正则表达式字符串除法,优先考虑部件长度

时间:2018-01-03 01:01:49

标签: regex

我有这个字符串

0Sc-a+nn1.ed_AI&AO1301#89

必须分为三部分

0Sc-a+nn1.ed_AI&AO

1301

89

我在python中使用此RE (?P<prefix>[a-z\.\_\-\+(\&amp;)]+\W?)(?P<num>((?P<ref_num>\d+)(#(?P<subpart_num>\d+))?)),但现在,在https://regex101.com/中进行测试。

我在确定第一部分时遇到问题。如果我尝试&#34; Sc-a + nn.ed_AI&amp; AO1301#89&#34;工作正常,但将数字添加到第一部分,例如,不要。

如何将第二部分和第三部分修改为#周围允许的最大长度,并且第一部分()允许在开头和中间的数字(从不在结尾,因为将在第二部分) ? ?就在那里,因为有时前面的元素不存在。

1 个答案:

答案 0 :(得分:1)

使用[a-zA-Z]{2}捕获&amp;后的字符串,并指定每个部分的长度,即[\d]{4}

(?P<prefix>[A-Za-z0-9._\-+&;]+[a-zA-Z]{2}?)(?P<num>((?P<ref_num>\d+)(#(?P<subpart_num>\d+))?))