这应该是什么正则表达式模式?

时间:2021-04-22 11:50:23

标签: python python-3.x regex logging

我只想提取整个部分 - "value":["10|8.0|1665|82|apple|#||0","8|1132|188.60|banana|#||0 "] 从一个文本文件中的所有行,然后写入另一个文本文件。这部分每一行都有不同的值。

我已经编写了这个正则表达式模式,但无法在另一个文本文件中获取这些完整部分。

with open("result.txt", "w+") as result_file:
     with open("log.txt", "r") as log-file:
         for lines in log-file:
            all_values= re.findall(r'("value"+:"[\w\.#|-]+")', lines)
            for i in all_values:
                result_file.write(i)

1 个答案:

答案 0 :(得分:1)

在您的模式中,您可以省略捕获组的外括号以获得匹配项。

这部分 "+ 匹配 1 次或多次双引号,这似乎不是必需的。

您没有得到整个匹配,因为字符串中的字符比字符类 [\w\.#|-]+ 中列出的字符多

作为更广泛的匹配,您可以使用

"value":\[".*?"]
  • "value": 字面匹配
  • \[" 匹配 ["
  • .*? 尽可能匹配任何字符
  • "] 匹配 "]

Regex demo