簡體   English   中英

*和。*在正則表達式中有什么區別?

[英]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.

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