2016-06-14 3 views
-3

Я работаю с файлом со звездочками (*) и трубами (|).Проверка Python Regex для повторной комбинации

Я хотел бы, чтобы регулярное выражение соответствовало комбинации, где между ними было как минимум 4 трубы с любым количеством звездочек. Любое количество труб должно быть согласовано до тех пор, пока оно не меньше 4.

Мне нужно убрать их из файла, оставив все остальное без изменений.

Примеры:

Матчей:

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

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

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

не соответствует:

||| 

    |?|*|*| 

    |||?| 
+0

Вы можете проверить регулярное выражение здесь: http://regexr.com/. Существует также полезный regex 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

Смежные вопросы