用正则表达式在字符串末尾匹配一个或多个0符号

问题描述 投票:0回答:1

假设我们有一些看起来像这样的字符串:ABCDEFGH000000(最后零的数量可能会有所不同)。我们需要在该行的末尾使用正则表达式匹配此“ 0”符号。

[当我写类似/(^.*)(0+$)/的文字时,我仅匹配最后一个“ 0”符号。但是,如果我写这样的内容/^(.*)(0{6,})/,我将匹配我的六个零。问题是-我可以有6个以上的零(或少于6个),所以不能使用{6,}

如何正确匹配字符串结尾之前的所有相干“ 0”符号?我使用PCRE

regex pcre
1个回答
0
投票

原因是*贪婪,因此.*匹配了可能允许最长正则表达式其余部分匹配的最长字符串。由于0+仅以单个0成功,因此.*可以匹配之前的所有内容,包括所有其他0字符。

使用非贪婪量词来匹配0之前的部分:

/(^.*?)(0+$)/

0
投票

/0+$/

Regexp尝试使最长的匹配,因此在您的第一种情况下,。*将吃掉所有零,除了最后一个需要的零。

© www.soinside.com 2019 - 2024. All rights reserved.