【问题标题】:Context-sensitive string splitting, preserving delimiters上下文相关的字符串拆分,保留分隔符
【发布时间】:2010-11-05 17:02:48
【问题描述】:

我有一个“foo-bar-1.23-4”形式的字符串,我需要在第一个连字符后跟一个数字进行拆分,这样结果是 ['foo-bar', '1.23-4 ']。我尝试了以下方法:

>>> re.split('-\d', 'foo-bar-1.23-4', 1)
['foo-bar', '.23-4']

>>> re.split('-(\d)', 'foo-bar-1.23-4', 1)
['foo-bar', '1', '.23-4']

结果不佳。有没有一种可以让我得到我想要的东西,而不必用最后一个元素来修饰分隔符?

【问题讨论】:

    标签: python string split


    【解决方案1】:

    你很亲密,试试这个:

    re.split('-(?=\d)', 'foo-bar-1.23-4', 1)
    

    我正在使用positive lookahead 来完成此操作 - 基本上我匹配的是一个短划线,其后紧跟一个数字字符。

    【讨论】:

      【解决方案2】:
      re.split('-(?=\d)', 'foo-bar-1.23-4', 1)
      

      使用lookahead,这正是安德鲁所做的,但比我快了一分钟...... :-)

      【讨论】:

        【解决方案3】:

        积极的前瞻工作会起作用吗?

        re.split('-?=\d', 'foo-bar-1.23-4', 1)
        

        不确定您是否需要 ( 和 ) 围绕前瞻,但试一试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-23
          • 1970-01-01
          • 2016-11-26
          • 1970-01-01
          • 2022-11-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多