我需要一个GREP表达式,它将找到6-10个数字,以1000个间隔的句点分隔。这些时期可以是空格,也可以不是空格

时间:2014-07-17 02:37:10

标签: regex

我需要一个GREP表达式,它将找到6-10个数字,以1000个间隔的句点分隔。这些时期可以是空格,也可以不是空格。它必须找到:

3.878.456.789   
  878.456.789   
   78.456.789   
    8.456.789   
      456.789    
3 878 456 789     
  878 456 789    
   78 456 789    
    8 456 789   
      456 789   
   3878456789     
    878456789    
     78456789    
      8456789   
       456789  

这些数字可以是任何数字,不受示例中的数字约束。给出的例子是显示空格或句点的长度和模式。

1 个答案:

答案 0 :(得分:1)

使用此:

grep -oP "(?=(?:\D*\d){6,10}\D*$)\b(?:\d{1,3}(?:[ .]\d{3})+|\d+)\b" somepath

<强>解释

  • 为了强制执行6-10规则,前瞻(?=(?:\D*\d){6,10}\D*)断言接下来的是任何非数字,然后是一位数,6到10次,然后是任意数量的非数字,直到行尾< / LI>
  • 数字匹配器由两个字边界\b
  • 包围
  • 数字为\d{1,3}(?:[ .]\d{3})+一到三位数后跟一个或多个(点或空格后跟三位数)的实例,或|
  • digits \d+