在Python中使用正则表达式拆分类似于ip地址的字符串

时间:2017-09-10 23:55:14

标签: python regex python-2.7 parsing regex-group

我希望有一个正则表达式,在看到'。'(点)

时会分开

例如:

Input: '1.2.3.4.5.6'
Output : ['1', '2', '3', '4', '5', '6']

我尝试过: -

>>> pattern = '(\d+)(\.(\d+))+'
>>> test = '192.168.7.6'
>>> re.findall(pat, test)

我得到了什么: -

[('192', '.6', '6')]

我对re.findall()的期望: -

[('192', '168', '7', '6')]

你能帮忙指出什么是错的吗?

我的想法 - 在pattern = '(\d+)(\.(\d+))+'中,初始(\d+)会找到第一个数字,即192然后(\.(\d+))+会找到'.<number>'形式的一个或多个出现,即.168.7.6

[编辑:] 这是我正在解决的问题的简化版本。 实际上,输入可以是 -

192.168 dot 7 {dot} 6

并且预期输出仍为[('192', '168', '7', '6')]

一旦我找出解压缩以提取.168.7.6之类的模式,我就可以将其扩展为dot 168{dot} 7之类的模式

1 个答案:

答案 0 :(得分:0)

由于您只需要查找数字,因此正则表达式\d+应足以找到由任何其他标记/分隔符分隔的数字:

re.findall("\d+", test)

这适用于任何一种情况:

>>> re.findall("\d+", "192.168.7.6")
['192', '168', '7', '6']
>>> re.findall("\d+", "192.168 dot 7 {dot} 6 | 125 ; 1")
['192', '168', '7', '6', '125', '1']