如何在Python中的正则表达式上拆分字符串[重复]
Posted
技术标签:
【中文标题】如何在Python中的正则表达式上拆分字符串[重复]【英文标题】:How to split a string on regex in Python [duplicate] 【发布时间】:2016-02-05 19:36:21 【问题描述】:我认为这个问题看起来很愚蠢,但我似乎无法让它发挥作用。如何将正则表达式合并到 Python string.split 方法中?下面是一些示例代码:
ip = '192.168.0.1:8080'
tokens = ip.split('[.|:]')
print tokens
由于某种原因,这会生成['192.168.0.1:8080']
。有人能指出我错过了什么吗?我尝试转义字符并使用双引号,但似乎没有任何改变。
【问题讨论】:
【参考方案1】:如果要根据正则表达式模式拆分字符串,则需要使用re.split
。
tokens = re.split(r'[.:]', ip)
在字符类中|
匹配文字|
符号并注意[.:]
匹配点或冒号(|
不会在此处执行 orring)。
所以你需要从字符类中删除|
,否则它也会根据管道字符进行拆分。
或
将string.split
与list_comprehension
一起使用。
>>> ip = '192.168.0.1:8080'
>>> [j for i in ip.split(':') for j in i.split('.')]
['192', '168', '0', '1', '8080']
【讨论】:
re.split
比 string.split
IIRC 贵得多。如果您知道您的字符串将是带有端口的 IP 地址,最好先使用temp = ip.split(':')
然后tokens = temp[1].split('.')
然后tokens.append(ip[1])
以上是关于如何在Python中的正则表达式上拆分字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章