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

标签 python regex

我已经在 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 ']

我做错了什么?

最佳答案

你可以使用这个正则表达式:

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

变化是:

  1. 使用惰性量词 .*? 而不是贪婪的 .*
  2. Excape 2nd | 以及您的正则表达式

关于Python 正则表达式查找两个字符对之间的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799096/

相关文章:

Python - 为什么使用 uuid4() 以外的任何东西来获取唯一字符串?

javascript - 正则表达式不断寻找我想要与前一个字符匹配的字符

jquery - 删除冒号之前的所有文本(:) using regex

java - 正则表达式,如何识别由空格分隔的 2 或 3 个单词(任何非空格)

python - 将一天的一小部分转换为时间

Python 脚本无法访问某些环境变量

python - 当计算机关闭时运行Python脚本会发生什么?

python - 尝试使用 Anaconda-navigator 安装 Tensorflow 但在导航器中找不到该包

regex - 获取所有字符,直到找到新的日期/小时

javascript - 如何在节点列表上使用带有 for 循环的 match() 方法