【问题标题】:Trimming leading zeros with regex使用正则表达式修剪前导零
【发布时间】:2015-06-12 10:54:50
【问题描述】:

我正在努力使正则表达式起作用。

我需要根据前导零的存在允许以下转换...

  1. 001234 -> 1234
  2. 1234 -> 1234
  3. 00AbcD -> AbcD
  4. 001234.1234 -> 1234.1234
  5. 001234.000002 -> 1234.2
  6. 001234/000002 -> 1234.2

我发现表达式匹配适用于转换 1、2 和 3,但我不确定如何匹配 4、5 和 6 中演示的(可选)第二部分。

^0*([0-9A-Za-z]*$)

【问题讨论】:

    标签: regex leading-zero


    【解决方案1】:

    您可以使用以下正则表达式获得零:

    /(?:^|[./])0+/g
    

    Demo

    并将第二组替换为第一组 (\1)。

    例如在 python 中,我可以执行以下操作:

    >>> s="""001234
    ... 1234
    ... 00AbcD
    ... 001234.1234
    ... 001234.000002
    ... 001234/000002"""
    
    >>> [re.sub(r'(:?^|[./])0+',r'\1',i) for i in s.split()]
    ['1234', '1234', 'AbcD', '1234.1234', '1234.2', '1234/2']
    

    【讨论】:

    • 谢谢 - 这有效但返回零 - 我如何让它返回去除零的值?
    • @Drammy 据说你需要在我添加到答案的python中使用像re.sub这样的替换函数
    【解决方案2】:
    ^(0+)(.+)
    

    第 2 组应该是结果。

    【讨论】:

    • 我得到这个 1234/000002 为 001234/000002.. 如示例 6 所示。
    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 2011-02-09
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多