[英]What's the difference between * and .* in regular expressions?
我看到*
的通配符已在某些命令中使用,例如: find *.jpg
,這意味着找到所有以.jpg
結尾的文件。 但是,在正則表達式中, .*
表示任何字符0次或多次。 那么,它們之間有什么區別? 當*
被使用,當是.*
?
在正則表達式中, *
是“零個或多個”重復標記。 .
是“任何單個字符(帶有警告)”表達。
在find
, *
字符是“任何”通配符,並且實際上不是正則表達式字符。 ?
是此類搜索情況下的“任何單個字符”。
文件名匹配模式(或globs )和正則表達式是兩個相似但不同的東西。
對於這兩個字符,大多數字符只是簡單地匹配自己,並且某些特殊字符具有特殊含義,可以通過在它們前面加上反斜杠\\
來抑制它們。
在文件名匹配模式(由shell和find
命令使用)中, ?
匹配任何單個字符, *
匹配零個或多個任意字符。 一.
(句點)不是特殊字符; 它只匹配一個文字.
字符。
在正則表達式(如通過使用grep
,很多文本編輯器,並且在文本執行搜索最命令), .
匹配任何單個字符,並且*
表示零個或多個出現在其前面的字符。
不僅如此。 文件名匹配模式對名稱以開頭的“隱藏”文件具有特殊的規則.
,並且語法和規則在一個外殼之間可能有所不同。 正則表達式也以幾種形式存在(例如grep
vs. egrep
,vs. Perl或PCRE)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.