任务:
- 给定:图像文件名列表
- 待办事项:创建一个文件名不包含单词"thumb"的新列表 - 即仅定位非缩略图图像(使用PIL - Python Imaging Library).
我试过r".*(?!thumb).*"但是失败了.
我已经找到了解决方案(在这里的stackoverflow)来预先添加^到正则表达式并将其置于.*负向前瞻:r"^(?!.*thumb).*"这现在有效.
问题是,我想了解为什么我的第一个解决方案不起作用,但我不这样做.由于正则表达式足够复杂,我真的很想理解它们.
我所理解的是^告诉解析器以下条件是在字符串的开头匹配.但不是.*(不工作)第一个例子也不是从字符串的开头开始的吗?我认为它会从字符串的开头开始,并在到达"拇指"之前搜索尽可能多的字符.如果是这样,它将返回不匹配.
有人可以解释为什么r".*(?!thumb).*"不起作用但是r"^(?!.*thumb).*"吗?
谢谢!