Python正则表达式不匹配

时间:2016-09-23 19:23:22

标签: python regex

我正在尝试使用正则表达式提取文件名。文件名在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字符而发生的。例如在这种情况下的'Ü'。

2 个答案:

答案 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