我正在使用脚本(Python)来查找一些文件.我将文件名与正则表达式模式进行比较.现在,我必须找到以"〜"(代字号)结尾的文件,所以我构建了这个正则表达式:
if re.match("~$", string_test):
    print "ok!"
好吧,Python似乎没有认识到正则表达式,我不知道为什么.我在其他语言中尝试了相同的正则表达式并且它完美地工作,任何想法?
PD:我在网上看到我必须插入
# -*- coding: utf-8 -*-
但没有帮助:(.
非常感谢,同时我会继续阅读,看看是否能找到一些东西.
sth*_*sth 10
re.match()仅当正则表达式在输入字符串的开头匹配时才会成功.要搜索任何子字符串,请re.search()改用:
if re.search("~$", string_test):
    print "ok!"
你的正则表达式只匹配字符串"〜"和(信不信由你)"〜\n".
你需要re.match(r".*〜$",无论如何)......这意味着零或更多(除换行之外的任何东西)后跟一个代字号后跟(字符串结尾或结尾前的换行符)串).
万一文件名可以包含换行符,请使用re.DOTALL标志并使用\ Z而不是$.
"工作"用其他语言:你必须使用搜索功能.
r在字符串常量的开头表示原始转义,例如'\n'是换行符,但r'\n'是两个字符,反斜杠后跟n  - 也可以用'\n'表示.原始转义\\在正则表达式中保存了很多,应该自动使用r"正则表达式"
BTW:在这种情况下避免正则表达式混淆...使用whatever.endswith('〜')
为了找到文件,使用glob替代,
import os
import glob
path = '/path/to/files'
os.chdir(path)
files = glob.glob('./*~')
print files
| 归档时间: | 
 | 
| 查看次数: | 2221 次 | 
| 最近记录: |