2012-11-07 87 views
1
grep "http:\/\/.*\.jpg" index.html -o 

給我的文字開始的http://的.jpg解釋foo和(FOO )之間的差異

結束也是如此:grep "http:\/\/.*\.\(jpg\)" index.html -o

的區別是什麼?有什麼情況可能會失敗?

我得到了它使用此正則表達式匹配是JPG,PNG或GIF:

http:\/\/.*\.\(jpg\|png\|gif\) 

事做反向引用或正則表達式分組,我讀。看不懂這部分\(\)

回答

2

分組在正則表達式中用於兩個目的。

一個用途是在使用替代方法時劃分部分正則表達式。在第三個正則表達式中就是這種情況,它允許您說擴展名可以是jpg,png或gif中的任意一種。

另一個用途是反向引用。這允許您在稍後的正則表達式中引用與正則表達式的早期部分相匹配的文本。例如,正則表達式如下匹配連續兩次出現任何字母:

\([a-z]\)\1 

的反向引用\ 1表示「任何在正規表達式匹配所述第一組匹配」。

1

( and )元字符。即它們本身不匹配,但意味着對grep有所幫助。

here來自:

分組與反斜槓後跟括號「(」, 「)」進行。

所以在該\(\)以上定義的基團的可能性以匹配|字符分隔內它們。即您的文件擴展名。

+0

好吧,那麼如何忽略包含在擴展前的文本中的等於或小於符號(<>)。例如,如果文本是「http:// agjfs> Image Kedar

相關問題