我現在正在輸入正規表達式。如何將以下文件名轉換爲Python中的正則表達式?
我想確定以下示例文件的模式:b410cv11_test.ext
。我希望能夠搜索符合上述示例文件模式的文件。我從哪裏開始(如此迷茫和困惑)以及到達與文件模式最匹配的解決方案的最佳方式是什麼?提前致謝。
問題的進一步說明:
我想是如下的圖案:必須用「B」開始,接着是三個數字,後跟「CV」,後面是兩個數字,然後是下劃線,然後是'釋放',然後是.'ext'
我現在正在輸入正規表達式。如何將以下文件名轉換爲Python中的正則表達式?
我想確定以下示例文件的模式:b410cv11_test.ext
。我希望能夠搜索符合上述示例文件模式的文件。我從哪裏開始(如此迷茫和困惑)以及到達與文件模式最匹配的解決方案的最佳方式是什麼?提前致謝。
問題的進一步說明:
我想是如下的圖案:必須用「B」開始,接着是三個數字,後跟「CV」,後面是兩個數字,然後是下劃線,然後是'釋放',然後是.'ext'
現在,你有你的文件名的人類可讀的描述,這是相當直截了當地把它翻譯成正則表達式(至少在這種情況下, )
必須
尖號(^
)錨正則表達式的要匹配什麼從頭開始,所以你再有開始有此符號。
'B',
在你重新任何非特殊字符將逐字匹配,所以你只需要使用 「B」 的這部分:^b
。
,然後按[...]數字,
這取決於其重新味道你使用了一下:
表達這種最普遍的方法是使用括號([]
)。這些意味着「匹配中所列的任何一個字符。[ASDF]
例如將匹配是0到9之間A
或S
或D
或F
,[0-9]
將匹配任何
你重新圖書館可能有一個快捷鍵」任何數字」在sed
和awk
你可以使用[[:digit:]]
[原文如此!],Python和許多其他語言,你可以使用\d
。
所以,現在你再讀取^b\d
。
跟着三個[...]
最簡單的方式來表達這將是重複剛纔的原子三次這樣的:\d\d\d
。
再次,您的語言可能會提供一個快捷方式:大括號({}
)。有時你必須用反斜槓(如果你使用sed或awk,請閱讀「擴展正則表達式」)轉義它們。他們還給你一種說法,「至少x,但不超過y原子的出現次數」:{x,y}
。
現在您有:^b\d{3}
其次是 'CV',
文字匹配再次,現在我們有^b\d{3}cv
後跟兩位數字,
我們alr Eady報道了這個問題:^b\d{3}cv\d{2}
。
然後下劃線,其次是「釋放」,其次是.'ext」
同樣,這都應該匹配字面上看,但圓點(.
)是一個特殊字符。這意味着你必須用一個反斜槓來回避它:^\d{3}cv\d{2}_release\.ext
退出反斜槓意味着像「b410cv11_test_ext」這樣的文件名也會匹配,這對你來說可能是或者可能不是問題。
最後,如果您要保證「.ext」後面沒有任何內容,請將re重新定位到匹配的結尾處,請使用美元符號($
)。
因此,對於您的特定問題的完整的正則表達式是:
^b\d{3}cv\d{2}_release\.ext$
容易。
無論您使用何種語言或庫,都必須在文檔中的某處提供參考,以便向您說明您的案例中確切的語法應該是什麼。一旦你已經學會將問題分解成合適的描述,理解更高級的結構將逐步給你。
你的問題有點不清楚。你說你想要一個正則表達式,但它可能是你想要一個glob風格的模式,你可以使用像ls這樣的命令嗎? glob表達式和正則表達式在概念上是相似的,但在實踐中卻有所不同(正則表達式的功能要強大得多,當查找文件時最常見的情況下,glob風格的模式更容易使用
另外,您認爲什麼是模式?當然,*(glob)或。*(正則表達式)將匹配該模式。此外,_test.ext(glob)或。 _test.ext(regexp)模式將與其他許多變體一樣。
例如,您可能會將其描述爲「b,後面是數字,後面是cv,後面是數字...」
O你可以用你的母語精確地解釋模式(這必須是你的第一步),通常這是一個相當直接的任務,可以將它轉換爲全局或正則表達式模式。
如果字母不重要,可以嘗試\ w \ d \ d \ d \ w \ w \ d \ d_test.ext,它可以匹配字母/數字模式,或者b \ d \ d \ dcv \ d \ d_test.ext或兩者的一些組合。
使用正則表達式時,我發現Mochikit regex example是一個很好的幫助。
/^b\d\d\dcv\d\d_test\.ext$/
然後使用python re(regex)模塊進行匹配。這當然假定正則表達式真的是你所需要的,而不像其他人提到的那樣是正則表達式。
我想的圖案是作爲 如下:必須用「B」開始,由三位數字的隨後 ,後跟「CV」, 後跟兩個數字,那麼 下劃線,後跟'釋放「 其次.'ext」
^b\d{3}cv\d{2}_release\.ext$
你忘了逃避這段時間。 – titaniumdecoy 2008-11-22 07:55:47
固定對你 – 2008-11-22 14:32:52
什麼是實際的文件模式?從_one_例子我們不能推斷你想要的。 – hop 2008-11-21 21:37:12