使用python正则表达式匹配文件名末尾的"〜"

1 python regex tilde

我正在使用脚本(Python)来查找一些文件.我将文件名与正则表达式模式进行比较.现在,我必须找到以"〜"(代字号)结尾的文件,所以我构建了这个正则表达式:

if re.match("~$", string_test):
    print "ok!"
Run Code Online (Sandbox Code Playgroud)

好吧,Python似乎没有认识到正则表达式,我不知道为什么.我在其他语言中尝试了相同的正则表达式并且它完美地工作,任何想法?

PD:我在网上看到我必须插入

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

但没有帮助:(.

非常感谢,同时我会继续阅读,看看是否能找到一些东西.

sth*_*sth 10

re.match()仅当正则表达式在输入字符串的开头匹配时才会成功.要搜索任何子字符串,请re.search()改用:

if re.search("~$", string_test):
    print "ok!"
Run Code Online (Sandbox Code Playgroud)


Joh*_*hin 9

你的正则表达式只匹配字符串"〜"和(信不信由你)"〜\n".

你需要re.match(r".*〜$",无论如何)......这意味着零或更多(除换行之外的任何东西)后跟一个代字号后跟(字符串结尾或结尾前的换行符)串).

万一文件名可以包含换行符,请使用re.DOTALL标志并使用\ Z而不是$.

"工作"用其他语言:你必须使用搜索功能.

r在字符串常量的开头表示原始转义,例如'\n'是换行符,但r'\n'是两个字符,反斜杠后跟n - 也可以用'\n'表示.原始转义\\在正则表达式中保存了很多,应该自动使用r"正则表达式"

BTW:在这种情况下避免正则表达式混淆...使用whatever.endswith('〜')


Jes*_*lon 7

为了找到文件,使用glob替代,

import os
import glob

path = '/path/to/files'
os.chdir(path)
files = glob.glob('./*~')

print files
Run Code Online (Sandbox Code Playgroud)