假设我们有一些看起来像这样的字符串:ABCDEFGH000000
(最后零的数量可能会有所不同)。我们需要在该行的末尾使用正则表达式匹配此“ 0”符号。
[当我写类似/(^.*)(0+$)/
的文字时,我仅匹配最后一个“ 0”符号。但是,如果我写这样的内容/^(.*)(0{6,})/
,我将匹配我的六个零。问题是-我可以有6个以上的零(或少于6个),所以不能使用{6,}
。
如何正确匹配字符串结尾之前的所有相干“ 0”符号?我使用PCRE
原因是*
贪婪,因此.*
匹配了可能允许最长正则表达式其余部分匹配的最长字符串。由于0+
仅以单个0
成功,因此.*
可以匹配之前的所有内容,包括所有其他0
字符。
使用非贪婪量词来匹配0
之前的部分:
/(^.*?)(0+$)/
/0+$/
Regexp尝试使最长的匹配,因此在您的第一种情况下,。*将吃掉所有零,除了最后一个需要的零。