【问题标题】:How to split a string on regex in Python [duplicate]如何在Python中的正则表达式上拆分字符串[重复]
【发布时间】: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']。有人能指出我错过了什么吗?我尝试转义字符并使用双引号,但似乎没有任何改变。

【问题讨论】:

    标签: python regex


    【解决方案1】:

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

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

    在字符类中| 匹配文字| 符号并注意[.:] 匹配点冒号(| 不会在此处执行 orring)。

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

    string.splitlist_comprehension 一起使用。

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

    【讨论】:

    • re.splitstring.split IIRC 贵得多。如果您知道您的字符串将是带有端口的 IP 地址,最好先使用temp = ip.split(':') 然后tokens = temp[1].split('.') 然后tokens.append(ip[1])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2015-05-29
    相关资源
    最近更新 更多