我需要构建一个正则表达式,给定一个文件名字符串(该文件名可能包含空格),并且文件名中的1-2个点之间会返回文件名列表。 例如:
00.37.jpg 00.38.jpg Convert To 3 Channels.xml Deploy All Masks.ini
应成为:
[00.37.jpg, 00.38.jpg, Convert To 3 Channels.xml, Deploy All Masks.ini]
我目前有一个执行此操作的正则表达式,但前提是文件名只有一个句点。
Regex = \ ?(.+?\.\w+)
非常感谢。
答案 0 :(得分:2)
您在正确的轨道上,只需对您的正则表达式进行一点修改(添加可选的点+词组)就可以了:
\ ?(.+?\.\w+(?:\.?\w+))
>>> string="00.37.jpg 00.38.jpg Convert To 3 Channels.xml Deploy All Masks.ini"
>>> re.findall(r"\ ?(.+?\.\w+\.?(?:\w+))", string)
['00.37.jpg', '00.38.jpg', 'Convert To 3 Channels.xml', 'Deploy All Masks.ini']
答案 1 :(得分:1)
尝试此正则表达式:
\?(。+?。\ w +。?\ w +)
答案 2 :(得分:1)
您可以尝试以下操作:
\w.*?\.\w+(?=\s)
说明:
\w.*?\.
匹配所有内容,直到文件扩展名包括.
和.\w+
与文件扩展名匹配,并且(?=\s)
积极的看法断言在文件扩展名之前存在空格答案 3 :(得分:1)
1
说明:
string="00.37.jpg 00.38.jpg Convert To 3 Channels.xml Deploy All Masks.ini prog.c the header.h a.b.c.d.e.p"
print re.findall(r"\w.*?\.\w+(?:\.\w+)*", string)
输出:
\w : 1 word character(i.e. [a-zA-Z0-9_])
.*? : 0 or more any character but newline
\. : a dot
\w+ : 1 or more word character
(?: : start non capture group
\. : a dot
\w+ : 1 or more word character
)* : end group, may appear 0 or more times. you can use ? instead of * if you want 2 dot max