Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用正则表达式拆分类似于ip地址的字符串_Python_Regex_Python 2.7_Parsing_Regex Group - Fatal编程技术网

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

在Python中使用正则表达式拆分类似于ip地址的字符串,python,regex,python-2.7,parsing,regex-group,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.f

我想要一个正则表达式,当看到一个“.”(点)时,它将分裂

例如:

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()
的期望:-

你能帮我指出问题所在吗

我的想法- 在
模式='(\d+)(\d+)+'
中,首字母
(\d+)
将找到第一个数字,即
192
,然后
(\。(\d+)+
将找到一个或多个出现的
.168
.7
.6

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

192.168 dot 7 {dot} 6
预期输出仍然是
[('192','168','7','6')]


一旦我找到了提取
.168
.7
.6
类模式的解决方案,我就可以将其扩展到
点168
{dot}7
类模式。

因为您只需要找到数字,正则表达式
\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']

等等,
test.split('.')有什么问题吗
如果您只想在点上分割?不要用大锤打苍蝇。我原以为会这样,但我的问题与我所问的不同。基本上,不是数字,而是复杂的字符串。实际上可以有“点”而不是“.”,即192点168点7点6,如此及其组合等。在这种情况下,您能否更新您的问题并发布一些您需要帮助的实际数据?对于我们来说,为您提供与您试图解决的问题不同的解决方案没有多大用处。我尝试了这个正则表达式,它给了我您想要的结果,(\d+[\.]*。不鼓励只使用代码的答案,因为它们没有解释如何解决问题中的问题。考虑更新你的答案来解释这个问题,以及它是如何解决问题的。请复习
>>> 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']