【问题标题】:Regex for leading zeros and exclude normal zeros前导零的正则表达式并排除正常零
【发布时间】:2015-06-14 01:43:35
【问题描述】:

我正在寻找两个遍历看起来像这样的字母数字列表:

0012-0103

我想删除所有前导零,但保留属于给定数值的那些。

我有这个得到所有零:

/0*([1-9][0-9])?0/

任何建议。我仍在查看正则表达式文档。

【问题讨论】:

  • 您使用哪种语言?你有小数还是整数?
  • 字母数字,或用破折号分隔的两个数字
  • 我正在使用 ruby​​,它在破折号的两侧都是字母数字,但我想考虑整数,例如 20、103 等。

标签: regex


【解决方案1】:

您可以使用以下内容:

\b0+

DEMO

解释:

  • \b 单词边界.. 这将检查由单词和非单词分隔的所有边界(数字是单词的一部分)
  • 0+ 匹配多个零

因此,这将匹配所有不在中间的零..

【讨论】:

  • \b 标准正则表达式的一部分,还是需要扩展正则表达式?
  • @Sobrique 通常,锚点被认为是扩展的正则表达式。\b 也是单词边界的锚点。
  • 感谢 Sobrique。所以这个过滤器在破折号的两边,或者我什至需要评估吗?
  • @porterhaus 它在两边都有效.. 检查演示 :)
  • Sobrique 感谢并感谢您提供的演示链接,这是一个很棒的工具。
【解决方案2】:

如果不了解语言以及您到底想做什么,很难给出准确的答案。我查看了您的个人资料,看来您可能正在使用 ruby​​ 进行此操作。因此,试试这个:

irb(main):001:0> string = "0012-0103"
=> "0012-0103"
irb(main):002:0> string.match(/0*([\d-]+)/).captures
=> ["12-0103"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2011-12-06
    相关资源
    最近更新 更多