我正在编写一个代码,用于检查 Git Repo 并找出在最后一次(最近一次)提交后哪些文件发生了更改。这些是 .sql 文件。我得到的输出如下
b'commit 7cc9c8ac247f2c139c37081aef091b78c6d51011\nAuthor: blahblah <[email protected]>\nDate: Wed Oct 17 18:46:37 2018 +0800\n\n test subprocess output\n\n:000000 100644 0000000... e69de29... A\t123.sql\n:000000 100644 0000000... 617f0a5... A\tabc.sql\n:000000 100644 0000000... e69de29... A\ttestFile1\n:000000 100644 0000000... e69de29... A\txyz.sql\n'
现在,我坚持使用正则表达式从字符串中提取文件名。我可以使用多个拆分来提取这些文件名,但是,这会很糟糕,并且会不必要地使我的代码复杂化。所以,我想使用re.findall
它,因为它会给出一个我必须处理的文件名数组。
这里,预期输出是
['123.sql','abc.sql','xyz.sql']
需要正则表达式模式的帮助。
示例代码示例:
import re
files = b'commit 7cc9c8ac247f2c139c37081aef091b78c6d51011\nAuthor: blahblah <[email protected]>\nDate: Wed Oct 17 18:46:37 2018 +0800\n\n test subprocess output\n\n:000000 100644 0000000... e69de29... A\t123.sql\n:000000 100644 0000000... 617f0a5... A\tabc.sqlt\n:000000 100644 0000000... e69de29... A\ttestFile1\n:000000 100644 0000000... e69de29... A\txyz.sql\n'
正则表达式 = "需要帮助"
files = re.findall(regex, files.decode('utf-8'))
您可以匹配一个或多个单词字符,后跟 a.
和sql
子字符串,但由于files
是字节字符串,您还应该在字符串文字前加上b
:
re.findall(rb'\w+\.sql', files)
^ ^^^^^^^^
细节
\w+
- 1 个或多个字母、数字、_
字符\.
- 一个点sql
- 一个sql
子串。请参阅Python 演示:
import re
files = b'commit 7cc9c8ac247f2c139c37081aef091b78c6d51011\nAuthor: blahblah <[email protected]>\nDate: Wed Oct 17 18:46:37 2018 +0800\n\n test subprocess output\n\n:000000 100644 0000000... e69de29... A\t123.sql\n:000000 100644 0000000... 617f0a5... A\tabc.sqlt\n:000000 100644 0000000... e69de29... A\ttestFile1\n:000000 100644 0000000... e69de29... A\txyz.sql\n'
print(re.findall(rb'\w+\.sql', files))
输出:
[b'123.sql', b'abc.sql', b'xyz.sql']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句