是否有任何簡單的選項在C#中執行MSDOS樣式模式匹配?如何實現MSDOS樣式模式匹配(通配符)?
我很喜歡RegEx;不過,我需要msdos風格的模式匹配。
預期樣品:
foo???.txt
*.bat
我覺得@ zmbq的回答是有道理的。我想確保我不會錯過.NET中的任何內置功能。我想我必須創建一個擴展方法Dos2RegExPattern,它將msdos模式轉換爲正則表達式並在我的應用程序中使用它。
是否有任何簡單的選項在C#中執行MSDOS樣式模式匹配?如何實現MSDOS樣式模式匹配(通配符)?
我很喜歡RegEx;不過,我需要msdos風格的模式匹配。
預期樣品:
foo???.txt
*.bat
我覺得@ zmbq的回答是有道理的。我想確保我不會錯過.NET中的任何內置功能。我想我必須創建一個擴展方法Dos2RegExPattern,它將msdos模式轉換爲正則表達式並在我的應用程序中使用它。
您可以將MS-DOS模式轉換爲標準的正則表達式格式。將?
更改爲.
和*
至.*
,並且不要忘記轉義其他字符(.
變爲\.
)。
因此,例如,*.bat
變成.*\.bat
而file???.dat
變成file...\.dat
。
編輯:
由於@hvd在評論中指出,?
在MS-DOS匹配一個或沒有字符,這取決於它的位置(file???.dat
比賽的所有文件與字符後3 file
,但沒有按f?ile.dat
不匹配file.dat
)。我懷疑任何用戶會發現...
你是什麼意思的「MSDOS風格模式匹配」?通配符?你能舉一個「MSDOS風格模式匹配」的例子嗎? – Bit
我已編輯帖子以匹配答案(可能是您想要的)。如果你想要不同的東西,隨意編輯。 –
謝謝阿列克謝,例子很好。 –