【发布时间】:2019-10-10 07:32:17
【问题描述】:
这个正则表达式模式:^.+\'(.+.png) 在在线编辑器中有效,但在 python 代码中无效。我看到其他帖子也有同样的问题。我尝试应用这些;
添加额外的转义斜线
在开头加上
r
正则表达式应该从单引号开始匹配,直到它到达 .png。
例如:
用这个字符串Executing 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() 中的这一部分。这是我没有写的代码。我该如何使用正则表达式?
【问题讨论】:
-
你的第二行和第三行
re.findall工作。见this demo。请注意,您需要在png之前转义.,因为它是一个文字点。 -
@WiktorStribiżew 看来我从哪里得到字符串是负责任的。我从
cStringIO.StringO.getvalue()得到字符串 -
那么
cStringIO.StringO.getvalue()的内容是什么?你发布的不是你当时拥有的。 -
通常情况下,
re.findall("'([^']+\.png)'", str(self.stream.getvalue()))之类的东西可能会起作用 -
@gelonida 嗯,你读过整篇文章吗?因为我说过我也尝试过这样做:-)
标签: python regex python-2.x