Python正则表达式查找两个字符对之间的所有子字符串

Python正则表达式查找两个字符对之间的所有子字符串,python,regex,Python,Regex,我在这里尝试了以前的答案。我只能找到其中的一个子集 下面是我正在编写的代码和示例 s = "{| mySting0 |} The {| mySting1 |} The {| mySting2 |} The {| mySting3 |} make it work " result = re.findall('{\|(.*)|}', s) 输出是, [' mySting0 |} The {| mySting1 |} The {| mySting2 |} The {| mySting

我在这里尝试了以前的答案。我只能找到其中的一个子集

下面是我正在编写的代码和示例

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 ']

我做错了什么?

您可以使用以下正则表达式:

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

  • 使用惰性量词
    *?
    而不是贪婪的
    *
  • 在您的正则表达式中也可以使用Excape 2nd
    |

  • 您可以使用此正则表达式:

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

  • 使用惰性量词
    *?
    而不是贪婪的
    *
  • 在您的正则表达式中也可以使用Excape 2nd
    |
  • “我做错了什么?”-使用贪婪的正则表达式,不使用反斜杠转义第二个管道字符。“我做错了什么?”-使用贪婪的正则表达式,不使用反斜杠转义第二个管道字符。