正则表达式 - 匹配横杠之间的数字

3 投票
3 回答
1558 浏览
提问于 2025-04-18 13:06

我正在尝试拼凑一个正则表达式,用来匹配两个连字符之间的数字。

一般来说

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 个回答

0

其实你并不一定需要用正则表达式来解决这个问题,不过如果用的话,正则表达式也很简单:

(?<=-)(\d+)

在Regex101上的演示

简单来说,这个正则表达式就是用来匹配第一个连字符后面的数字。

8

你可以不使用正则表达式来实现这个功能。

num = "9-b-90-2-2"
print num.split('-')[1] # b
3

你可以使用下面的正则表达式来提取只有数字b的部分。

^[^-]*-([^-]*).*

示例

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

如果输入包含一行或多行内容,那么你需要开启多行模式。

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

撰写回答