gpt4 book ai didi

Python 正则表达式可以在线运行但不能在代码中运行

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:05 24 4
gpt4 key购买 nike

此正则表达式模式:^.+\'(.+.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 子字符串。

关于Python 正则表达式可以在线运行但不能在代码中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com