如何在Python中的正则表达式中拆分字符串

How to split a string on regex in Python

本问题已经有最佳答案,请猛点这里访问。

我认为这个问题看起来很愚蠢,但我似乎不能解决。如何将正则表达式合并到python string.split方法中?以下是一些示例代码:

1
2
3
ip = '192.168.0.1:8080'
tokens = ip.split('[.|:]')
print tokens

由于某种原因,这会生成['192.168.0.1:8080']。有人能指出我遗漏了什么吗?我尝试了转义字符和使用双引号,但似乎没有什么改变。


如果要根据regex模式拆分字符串,则需要使用re.split

1
tokens = re.split(r'[.:]', ip)

在一个字符类中,|与文字|符号匹配,并注意[.:]与点或冒号匹配(|在这里不进行更正)。

所以您需要从字符类中删除|,否则它也会根据管道字符进行拆分。

list_comprehension一起使用string.split

1
2
3
>>> ip = '192.168.0.1:8080'
>>> [j for i in ip.split(':') for j in i.split('.')]
['192', '168', '0', '1', '8080']