正则表达式 - 匹配连字符之间的数字

3
我将尝试拼凑一个正则表达式来匹配连字符之间的数字。
常规
a-b-c-d-e, where a,b,c,d,e can each be either one, two or three digit numbers.

示例

9-b-90-2-2    

19-b-390-2-2

如何从每个表达式中选择数字b?
3个回答

8
你可以不使用正则表达式来完成。
num = "9-b-90-2-2"
print num.split('-')[1] # b

3
您可以使用以下正则表达式仅获取数字b,
^[^-]*-([^-]*).*

DEMO

>>> str = "9-b-90-2-2 "
>>> m = re.findall(r'^[^-]*-([^-]*).*', str)
>>> m 
['b']

如果输入包含一个或多个行,则需要启用MULTILINE修饰符。
>>> str = """9-45-90-2-2 
... 9-45-90-2-2-89-878"""
>>> m = re.findall(r'^[^-]*-([^-]*).*', str, re.MULTILINE)
>>> m
['45', '45']

0

对于这个问题,你实际上并不需要正则表达式,但是正则表达式很简单:

(?<=-)(\d+)

在Regex101上的演示

基本上,这只是匹配第一个连字符后面的数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接