Python 正则表达式可以在线使用但不能在代码中使用
Python regex works online but not in code
此正则表达式模式:^.+\'(.+.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()
中的这一部分。这是我没有写的代码。我该如何使用正则表达式?
您需要将 self.stream.getvalue()
的输出转换为字符串,并丢弃模式的 ^.+
部分,因为 re.findall
会搜索输入字符串中任何位置的所有匹配项。
使用
results = re.findall(r"'([^']+\.png)", str(self.stream.getvalue()))
此外,注意转义模式中 .
个字符的点。
图案详情
'
- 单引号
([^']+\.png)
- 捕获组 1:
[^']+
- '
以外的 1+ 个字符
\.png
- .png
子字符串。
此正则表达式模式:^.+\'(.+.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()
中的这一部分。这是我没有写的代码。我该如何使用正则表达式?
您需要将 self.stream.getvalue()
的输出转换为字符串,并丢弃模式的 ^.+
部分,因为 re.findall
会搜索输入字符串中任何位置的所有匹配项。
使用
results = re.findall(r"'([^']+\.png)", str(self.stream.getvalue()))
此外,注意转义模式中 .
个字符的点。
图案详情
'
- 单引号([^']+\.png)
- 捕获组 1:[^']+
-'
以外的 1+ 个字符
\.png
-.png
子字符串。