簡體   English   中英

帶兩個正則表達式參數的fnmatch函數

[英]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 (這是filenamefnmatch的第一個參數)沒有用作正則表達式,而只是將字符串傳遞給re.match

您還可以從代碼中看到,第二個參數pattern是經過轉換的,而不是直接用作正則表達式,因為“ Unix shell樣式通配符”語法不是regex。 我建議您閱讀文檔

我們可以將fnmatch與兩個正則表達式一起使用嗎?

不,我們不能。

fnmatch用於將文件名與“ shell樣式”表達式匹配(尚不清楚正則表達式)。 我不知道您要完成什么,但總之,不。 您需要給它一個特定的文件名,然后給它一個匹配的模式,它不會嘗試查看兩個模式是否一致。

不,您不能那樣使用fnmatch 它們不是您使用方式的正則表達式。 您需要給它一個特定的文件名,然后給它一個匹配的模式,它不會嘗試查看兩個模式是否一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM