如何在匹配中丢弃五个前导零?

时间:2015-10-28 15:46:02

标签: regex digit

我需要支持我的正则表达式。让我们说我有字符串000001234567,其中1234567是一个可变的数字字符串。我需要在前5个零之后开始提取前五位数。

结果应该是:

12345 

如果我使用简单的正则表达式(\d{5}),我会从左边得到前5个数字,但我希望在零之后开始捕获并得到结果12345

3 个答案:

答案 0 :(得分:1)

根据您使用的语言,这可能略有不同,但在Ruby中:

/0+(\d+)/

这将为您提供1234567

的匹配组

答案 1 :(得分:1)

每个正则表达式引擎在它支持的功能方面略有不同。您的问题目前不包含语言或引擎标记。

使用Perl,Ruby或pcregrep中与Perl兼容的正则表达式解决此问题的一种方法是使用范围修饰符和“keep”运算符。例如,在Ruby中:

 List<table> updRecs = Context.tables.toList();
 for each
 {
  if(col1 == 0)
  col2 = true 
  else
  col2 = false
 }

其他解决方案可能涉及捕获组,否定字符类,零宽度外观或其他引擎特定功能。并非所有功能都适用于所有引擎,因此您的里程可能会有所不同。

答案 2 :(得分:0)

搜索0*([1-9]\d{4})将跳过前导零,查找一个非零数字,然后查找任意数字的四个。

在表达式中使用[1-9]可确保第一个捕获的数字不为零。