2012-11-07 86 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

相关问题