2016-06-14 51 views
-3

我正在使用帶有星號(*)和管道(|)的文件。Python正則表達式檢查重複組合

我想要一個正則表達式來匹配一個組合,其中至少有4個管道與任何數量的星號之間。任何數量的管道需要匹配,只要至少有4個。

我需要能夠從文件中刪除這些文件,並保持其他所有內容不變。

例子:

匹配:

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

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

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

不匹配:

||| 

    |?|*|*| 

    |||?| 
+0

您可以測試你的正則表達式在這裏:http://regexr.com/。還有一個有用的正則表達式cheatsheet。 – Danibix

回答

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