grep "http:\/\/.*\.jpg" index.html -o
为我提供以 http:// 开头并以 .jpg
结尾的文字所以:grep "http:\/\/.*\.\(jpg\)" index.html -o
有什么区别?是否存在可能失败的任何情况?
我使用这个正则表达式来匹配jpg,png或gif:
http:\/\/.*\.\(jpg\|png\|gif\)
与我阅读的反向引用或正则表达式分组有关。无法理解这部分\(\)
答案 0 :(得分:2)
分组在正则表达式中用于两个目的。
一种用途是在使用替代品时划分正则表达式的部分内容。在你的第三个正则表达式中就是这种情况,它允许你说扩展名可以是jpg,png或gif中的任何一个。
另一个用途是反向引用。这允许您在后续正则表达式中引用与正则表达式的早期部分匹配的文本。例如,以下正则表达式匹配连续出现两次的任何字母:
\([a-z]\)\1
反向引用\ 1表示“匹配正则表达式中与第一组匹配的任何内容”。
答案 1 :(得分:1)