在Python中使用正则表达式从字符串中提取数字(包括破折号)

时间:2019-03-21 11:17:17

标签: python regex

您好,谢谢您的帮助。

字符串示例:

“ Hello 43543” --->“ 43543”
“ John Doe 434-234” --->“ 434-234”

我需要一个正则表达式来提取右侧的示例。

2 个答案:

答案 0 :(得分:0)

如果您的所有字符串都是这样,则无需re就可以实现相同的目的:

s = "John Doe 434-234"
n = s.split()[-1] 

print(n)

>>> "434-234"

它将在空格处分割字符串,并为您提供最后一个字段。

答案 1 :(得分:0)

我将按照以下方式进行操作:

import re
pattern = r'\d[0-9\-]*'
number1 = re.findall(pattern,'Hello 43543')
number2 = re.findall(pattern,'John Doe 434-234')
print(number1[0]) #43543
print(number2[0]) #434-234

我的解决方案假定您正在寻找以digit开头且所有其他字符均为digit或-的任何字符串,这意味着它还将抓取4---9-2-4---并等等,但这在您的用例中可能不是问题。

我想指出,在 书写模式之前,您应该回答以下问题:完全匹配的内容是什么?我的模式按给定的示例工作,但请记住,这并不意味着它会自动提供所需的输出,以及您可能希望使用它处理的所有数据。