首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

DOS 通配符 * 與 ? 實測:* 後字元不被忽略、完整匹配語義驗證

     編輯:程式設計綜合問答

常見誤解

「* 後擴展名之前的內容都被忽略」

**錯誤**。* 代表「任意長度 (含 0) 的任意字元」,**後續字元仍參與匹配**。

實測驗證 (Windows 10 cmd)


C:\test> dir /b
ab.txt
abc.txt
abx.txt
abcd.txt
a.txt

C:\test> dir /b ab*c.txt
abc.txt
abx.txt          ← x 匹配 *,c.txt 後綴匹配成功
abcd.txt         ← cd 匹配 *,c.txt 後綴匹配成功
ab.txt           ← * 匹配空字串,c.txt 後綴失敗 → **不列出**
a.txt            ← * 匹配空,c.txt 失敗 → **不列出**

通配符語義對照

abc.txt, abxc.txt (ab.txt 不匹配)
模式含義匹配範例
*任意字元序列 (含空)a* → a, ab, abc...
?單一任意字元a?c → abc, axc, a2c...
ab*c.txt以 ab 開頭、以 c.txt 結尾、中間任意abc.txt, abxxc.txt, abc.txt
ab?c.txt以 ab 開頭、第 4 字元任意、以 c.txt 結尾

查找「ab 開頭 c 結尾」正確模式


dir /b ab*c*   ← 以 ab 開頭、含 c、任意結尾
dir /b ab*c.   ← 以 ab 開頭、含 c、有副檔名
dir /b ab*c.txt ← 以 ab 開頭、以 c.txt 結尾 (最精確)

若需「ab 開頭、c 結尾、無副檔名」:dir /b ab*c. (點號代表無副檔名) 或 dir /b ab*c (但會匹配 abc.txt)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved