此正则表达式模式:^.+\'(.+.png) 在在线编辑器中有效,但在 python 代码中无效。我看到其他帖子也有同样的问题。我尝试应用那些;
添加一个额外的转义斜线
在开始引号前加上
r
正则表达式应该从单引号开始匹配,直到匹配到 .png。
例如:
使用此字符串 执行 identify -format %k 'testcases/art/test_files/video_images/single-[snk1=640x480p59.9]-[src1=720x480i59.9].png'
我想要:testcases/art/test_files/video_images/single-[snk1=640x480p59.9]-[src1=720x480i59.9].png
我试过了(不是按时间顺序):
result = re.findall("^.+\\'(.+\\.png)", self.stream.getvalue()) # I also tried prepending all of these with r
result = re.findall("^.+\'(.+.png)", self.stream.getvalue())
result = re.findall("^.+'(.+.png)", self.stream.getvalue())
result = re.findall("^.+'(.+.png)", str(self.stream.getvalue()))
result = re.findall("\^.+'(.+.png)\", self.stream.getvalue())
编辑:我还尝试使用 re.match() 和 re.search()
更新:
可能我从中获取字符串的地方是 cStringIO.StringO.getvalue(),这是代码 self.stream.getvalue() 中的这一部分。这是我没有写的代码。如何对此使用正则表达式?
请您参考如下方法:
您需要将 self.stream.getvalue() 的输出转换为字符串,并将模式的 ^.+ 部分丢弃为 re.findall 搜索输入字符串中任何位置的所有匹配项。
使用
results = re.findall(r"'([^']+\.png)", str(self.stream.getvalue()))
此外,请注意转义模式中的文字 . 字符的点。
图案细节
'- 单引号([^']+\.png)- 捕获第 1 组:[^']+- 除了' 之外的 1+ 个字符
\.png-.png子字符串。
