![](/img/trans.png)
[英]fnmatch - Matching for Patterns using quantifiers and other regex options
[英]fnmatch function with two regex parameters
我們可以將fnmatch
與兩個正則表達式一起使用嗎?
例如,如果我使用fnmatch("file*", "*", 0)
,在這種情況下會匹配嗎?
否。fnmatch的模式不是正則表達式-根據python標准lib文檔,它們是“ Unix shell樣式通配符”
例如,如果我使用
fnmatch("file*", "*", 0)
,在這種情況下會匹配嗎?
是的,一旦刪除了多余的第三個參數,它當然會:
>>> from fnmatch import fnmatch
>>> fnmatch("file*", "*")
True
但是,它不匹配,因為它將兩個參數都解釋為正則表達式。 之所以匹配,是因為模式"*"
將匹配filename
任何輸入 ,包括"file*"
。 您可以在源代碼中看到:
return re_pat.match(name) is not None
name
(這是filename
, fnmatch
的第一個參數)沒有用作正則表達式,而只是將字符串傳遞給re.match
。
您還可以從代碼中看到,第二個參數pattern
是經過轉換的,而不是直接用作正則表達式,因為“ Unix shell樣式通配符”語法不是regex。 我建議您閱讀文檔 。
我們可以將
fnmatch
與兩個正則表達式一起使用嗎?
不,我們不能。
fnmatch
用於將文件名與“ shell樣式”表達式匹配(尚不清楚正則表達式)。 我不知道您要完成什么,但總之,不。 您需要給它一個特定的文件名,然后給它一個匹配的模式,它不會嘗試查看兩個模式是否一致。
不,您不能那樣使用fnmatch
。 它們不是您使用方式的正則表達式。 您需要給它一個特定的文件名,然后給它一個匹配的模式,它不會嘗試查看兩個模式是否一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.