我希望有一个正则表达式,在看到'。'(点)
时会分开例如:
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
之类的模式
答案 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']