Регулярное выражение Python находит все подстроки между двумя парами символов

#python #regex

#python #Регулярное выражение

Вопрос:

Я пробовал предыдущие ответы здесь на SO. Я смог найти только одно подмножество из нескольких.

вот код и пример, над которыми я работаю.

 s = "{| mySting0 |}  The {| mySting1 |}  The {| mySting2 |}  The {| mySting3 |}  make it work "

result = re.findall('{|(.*)|}', s)
  

вывод,

 [' mySting0 |}  The {| mySting1 |}  The {| mySting2 |}  The {| mySting3 |}  make it work ']
  

Что я делаю не так?

Комментарии:

1. » Что я делаю не так? » — использование жадного регулярного выражения, не экранируя второй символ канала обратной косой чертой.

Ответ №1:

Вы можете использовать это регулярное выражение:

 >>> s = "{| mySting0 |}  The {| mySting1 |}  The {| mySting2 |}  The {| mySting3 |}  make it work "
>>> re.findall(r'{|(.*?)|}', s)
[' mySting0 ', ' mySting1 ', ' mySting2 ', ' mySting3 ']
  

Изменения:

  1. Используйте ленивый квантификатор .*? вместо жадного .*
  2. | Также выделите 2-е в вашем регулярном выражении