我的电话号码格式如下:
02R-01240-250A
02R-01242-250
15-09110-200X
15-09110-212
我可以使用以下命令捕获中间的5位数字(始终为5):
([^-]+[0-9]{4})
但是我真的很想抓住这5个数字集的最后两位,并在我的Pandas数据框中添加一个新列。我还需要能够在中间找到一个新专栏。
答案 0 :(得分:4)
如果模式保持不变,请尝试使用非regex
的解决方案:
s = '02R-01240-250A'
print(s.split('-')[1][-2:])
# 40
答案 1 :(得分:2)
您可以使用
-[0-9]*([0-9]{2})-
请参见regex demo。捕获的数字将是连字符前的最后两位。要抓住最后两个数字之前的数字,请使用
-[0-9]*([0-9])[0-9]{2}-
详细信息
-
-连字符[0-9]*
-零个或多个数字([0-9]{2})
-捕获组1(使用extract
时,即方法返回的值):两位数字后跟... -
-连字符。答案 2 :(得分:1)
尝试以下模式:
-[0-9]{2}[0-9]([0-9]{2})- #last two digits
-[0-9]{2}([0-9])[0-9]{2}- #middle digit
根据需要提取两件事,可以将两个捕获组与re.search()
一起使用,以一次获取最后两位数字和中间数字。这就要求总是有五个数字,但是您说总是有五个数字。
s = re.search("-[0-9]{2}([0-9])([0-9]{2})-", your_string)
oneColumn = s.group(1) #middle digit
anotherColumn = s.group(2) #last two digits
模式中的括号包围了两个不同的捕获组。