【问题标题】:What is the regex to match everything after leading zeros在前导零之后匹配所有内容的正则表达式是什么
【发布时间】:2021-10-22 14:13:36
【问题描述】:

我想知道如何匹配字符串开头的零之后的字符串。

所以字符串应该匹配的例子是

ABC0123 -> ABC0123
0ABC0123 -> ABC0123
000ABC0123 -> ABC0123

我尝试过[^0]+$,但这会返回以下错误

   ABC0123 -> 123
    0ABC0123 -> 123
    000ABC0123 -> 123

【问题讨论】:

  • 试试regex101 或类似的网站让你的正则表达式正确吗?
  • 为什么最后一个例子保持一个零?是否最多忽略 2 个零???
  • @Bohemian 感谢您指出这是一个错字。最后一个例子也不应该有前导零

标签: regex zero-padding


【解决方案1】:

使用[^0]+$ 将匹配除0 之外的任何字符,直到字符串结束。该匹配将在0123 中的最后一个零之后开始,并将给你123 作为匹配。

要仅获得匹配,您可以使用除 0 或换行符之外的任何字符开始匹配,然后匹配可选字符。

[^0\n\r].*

Regex demo

或者您可以匹配可选的前导零,并捕获组 1 中的其余字符串。

如果你只想匹配非空白字符,你可以使用\S+。要匹配除换行符以外的任何字符,您可以使用.+

^0*(\S+)

Regex demo

【讨论】:

  • 谢谢,但是 Match 组匹配了我希望的整个字符串,它只匹配前导零之后的所有内容
  • @Darrell123 零后的值在捕获组 1 中(在 regex101 链接中以绿色突出显示)regex101.com/r/4Y4PC3/1 工具或语言是什么?
  • 该工具具有函数 SUBSTR(string.RegEx),它返回与正则表达式匹配的字符串部分。因此,如果它与整个字符串匹配,它将再次给我同样的东西
  • 你可以试试^0*\K\S+ regex101.com/r/9aEPQl/1(?<=^0*(?!0))\S+ regex101.com/r/fcFH7C/1。或许你也可以在替换中使用第 1 组,通常用\1$ 表示,或者查看是否有匹配函数,然后获取第 1 组的值。
  • @Darrell123 我已经更新了答案,只为了匹配。
【解决方案2】:

以除0 之外的单词char 开头,然后是单词chars:

[\w&&[^0]]\w+

live demo

【讨论】:

    【解决方案3】:

    在字符串开头的零之后匹配字符串可以通过积极的后向观察来匹配

    (?<=^0*)[^0].*
    

    (?&lt;=^0*)lookbehind 匹配在字符串开头紧跟零个或多个0 字符的位置,[^0].* 将匹配除0 之外的字符和字符串的其余部分。见this regex demo

    在某些正则表达式(如 PCRE 或 Onigmo)中,您可以使用 \K match reset operator

    ^0*\K.+
    

    ^0* 将匹配字符串开头的零个或多个 0 字符,\K 将从匹配内存缓冲区中丢弃这些匹配的字符。见this regex demo

    在 ICU 正则表达式(R stringr 函数,Swift)或 Java 中,您可以使用 constrained-width lookbehind 模式。比如说,你知道前面不能有超过 100 个零。然后就可以使用了

    (?<=^0{0,100})[^0].*
    

    (?&lt;=^0{0,100})lookbehind 匹配在字符串开头紧跟零到 100 个零的位置,[^0].* 将匹配除0 之外的字符和字符串的其余部分。见this regex demo

    【讨论】:

      【解决方案4】:

      最简单的方法是从第一个非零开始匹配。
      这是通过在当前示例字符之后进行简单的查看来完成的。
      而且这不会匹配一个空字符串。

      .(?<!0).*
      

      https://regex101.com/r/EeyYQU/1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 2015-01-22
        • 2012-12-05
        相关资源
        最近更新 更多