Python正则表达式检查重复组合

时间:2016-06-14 21:54:16

标签: python regex

我正在处理一个包含星号(*)和管道(|)的文件。

我想要一个正则表达式来匹配一个组合,其中至少有4个管道,它们之间有任意数量的星号。只要存在至少4个,就需要匹配任意数量的管道。

我需要能够从文件中删除这些内容,保留其他所有内容。

示例:

匹配

   |||||||||||||||

   |***|*||******|  

   |||*****************|

不匹配:

   |||

   |?|*|*|

   |||?|

1 个答案:

答案 0 :(得分:0)

描述

(?:[*]*[|]){4,}

Regular expression visualization

此正则表达式将执行以下操作:

  • 查找由*|字符
  • 组成的子字符串
  • 要求子字符串至少包含四个|字符
  • 允许子字符串包含任意数量的*字符

实施例

现场演示

https://regex101.com/r/mJ4nY4/2

示例文字

|||||||||||||||
|***|*||******|
|||*****************|
|||
|?|*|*|
|||?|

样本匹配

|||||||||||||||
|***|*||******|
|||*****************|

解释

NODE                     EXPLANATION
----------------------------------------------------------------------
  (?:                      group, but do not capture (at least 4
                           times (matching the most amount
                           possible)):
----------------------------------------------------------------------
    [*]*                     any character of: '*' (0 or more times
                             (matching the most amount possible))
----------------------------------------------------------------------
    [|]                      any character of: '|'
----------------------------------------------------------------------
  ){4,}                    end of grouping
----------------------------------------------------------------------

替代

如果您不想捕获字符串*中的前导*|||**|,那么您可以使用此表达式

[|](?:[*]*[|]){3,}

Regular expression visualization

实施例

现场演示

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