Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
grep "http:\/\/.*\.jpg" index.html -o
给我以http://开头并以.jpg结尾的文本
也是如此:grep "http:\/\/.*\.\(jpg\)" index.html -o
grep "http:\/\/.*\.\(jpg\)" index.html -o
有什么不同?是否有任何情况可能会失败?
我使用这个正则表达式来匹配 jpg、png 或 gif:
http:\/\/.*\.\(jpg\|png\|gif\)
与我阅读的反向引用或正则表达式分组有关。看不懂这部分\(\)
\(\)
分组在正则表达式中有两个用途。
一种用途是在使用替代方法时分隔正则表达式的一部分。在您的第三个正则表达式中就是这种情况,它允许您说扩展名可以是 jpg、png 或 gif 中的任何一个。
另一个用途是反向引用。这允许您在 regexp 中稍后引用与 regexp 的较早部分匹配的文本。例如,以下正则表达式匹配任何连续出现两次的字母:
\([a-z]\)\1
反向引用 \1 表示“匹配与正则表达式中的第一组匹配的任何内容”。
(并且)是元字符。即他们不匹配自己,但对grep.
(
)
grep
从这里:
使用反斜杠后跟括号“(”,“)”进行分组。
所以在上面的\(and中\)定义了一组由|字符分隔的匹配可能性。即您的文件扩展名。
\(
\)
|