1

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

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

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

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

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

4 回答 4

1

Using[^0]+$将匹配除0字符串末尾之外的任何字符。那场比赛将在最后一个零之后开始0123,并将给你123作为一场比赛。

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

[^0\n\r].*

正则表达式演示

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

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

^0*(\S+)

正则表达式演示

于 2021-08-21T10:18:37.780 回答
0

从除 a 之外的单词 char 开始0,然后是单词 chars:

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

现场演示

于 2021-08-21T10:27:25.803 回答
0

最简单的方法是从第一个非零开始匹配。
这是通过在当前示例字符之后的简单回顾来完成的。
这将不匹配空字符串。

.(?<!0).*

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

于 2021-08-22T20:08:52.770 回答
0

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

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

向后查找匹配在字符串开头(?<=^0*)紧跟零个或多个字符的位置,并将匹配字符串的其余部分以外的字符。请参阅此正则表达式演示0[^0].*0

在某些正则表达式(如 PCRE 或 Onigmo)中,您可以使用\K 匹配重置运算符

^0*\K.+

将匹配字符串开头的^0*零个或多个字符,并将从匹配内存缓冲区中丢弃这些匹配的字符。请参阅此正则表达式演示0\K

在 ICU 正则表达式风格(Rstringr函数、Swift)或 Java 中,您可以使用约束宽度的lookbehind模式。比如说,你知道前面不能有超过 100 个零。然后你可以使用

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

(?<=^0{0,100})后视匹配在字符串开头紧跟零到 100 个零的位置,并将[^0].*匹配0字符串的其余部分以外的字符。请参阅此正则表达式演示

于 2021-08-21T18:57:10.120 回答