[英]Matching “~” at the end of a filename with a python regular expression
我正在使用腳本(Python)查找一些文件。 我將文件名與正則表達式模式進行比較。 現在,我必須找到以“〜”(波浪號)結尾的文件,因此我構建了此正則表達式:
if re.match("~$", string_test):
print "ok!"
好吧,Python似乎無法識別正則表達式,我不知道為什么。 我在其他語言中嘗試了相同的正則表達式,並且效果很好,對嗎?
PD:我在網上閱讀了必須插入的內容
# -*- coding: utf-8 -*-
但沒有幫助:(。
非常感謝,與此同時,我將繼續閱讀以查找是否有任何東西。
僅當正則表達式在輸入字符串的開頭匹配時, 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“ regex”
順便說一句:在這種情況下, 避免正則表達式混淆...使用what.endswith('〜')
要查找文件,請改用glob
,
import os
import glob
path = '/path/to/files'
os.chdir(path)
files = glob.glob('./*~')
print files
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.