我正在尝试使用正则表达式提取文件名。文件名在by.partialButtonText
列表中,要匹配的模式为by.partialLinkText
。
files
在这个例子中
songTitle
包含:
files = listdir(curdir)
print("Pattern : %s" % songTitle)
for songs in files:
print(songs)
re_found = re.match(re.escape(songTitle) + r'.*\.mp3$', songs)
if re_found:
FileName = re_found.group()
print(FileName)
break
files
(要匹配的模式):['.DS_Store', '__init__.py', 'command_line.py', "Skrillex & Diplo - 'Mind' feat. Kai (Official Video)-fDrTbLXHKu8.mp3"]
输出:
songTitle
修改
我运行了一些测试并意识到问题是由于非ascii字符而发生的。例如在这种情况下的'Ü'。
答案 0 :(得分:0)
正则表达式实际上看起来很好,但问题出在你的缩进和if语句中。试试这个:
files = listdir(curdir)
print(files)
print("Pattern : %s" %songTitle)
for songs in files:
re_found = re.match(re.escape(songTitle) + r'.*\.mp3$', songs)
if re_found:
FileName = re_found.group()
print(FileName)
break
另外,在编写正则表达式文字时,通常应该输入一个' r'在文字之前,否则你需要逃避反斜杠。
答案 1 :(得分:0)
这有效:
files = listdir(curdir)
print("Pattern : %s" % songTitle)
for songs in files:
re_found = re.match(re.escape(songTitle) + r'.*\.mp3$', songs)
if re_found:
FileName = re_found.group()
print(FileName)
break