Python,正则表达式 : non-greedy not working when overlapping?

标签 python regex overlapping non-greedy

MCVE python 片段

import re
str = "aa {bb cc {dd} ee"
print(re.search("{.*}", str).group())
print(re.search("{.*?}", str).group())

输出为

{bb cc {dd}
{bb cc {dd}

但是,我预料到

{bb cc {dd}
{dd}

为什么附加的 ? 没有使正则表达式变得非贪婪?重叠与此有关吗?

最佳答案

它是非贪婪的,但非贪婪并不意味着“找到匹配的最小的东西”,它的意思是“从匹配的字符串的第一个位置开始找到匹配的最小的东西。 ”第一个左大括号是匹配的开始,从那里开始匹配的最小内容是 {bb cc {dd}

关于Python,正则表达式 : non-greedy not working when overlapping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127126/

相关文章:

Python将自身更改为继承类

JavaScript/正则表达式 : Expression works in one environment and not another

c# - 使用 .net 正则表达式替换字符串中的文本

android - ViewFlipper 中的 Textview 重叠问题..

python - SQLAlchemy:通过主键进行高效/更好的选择?

python - 列表中的空格

python - A = Bᵀ·B 的稀疏矩阵分解

regex - 在 bash/sed 中,如何匹配小写字母后跟大写字母?

html - 与CSS网格重叠的段落

css - 在 css 中定位,最大左右,直到窗口调整大小变小,然后覆盖旧的最大并设置新的最大位置