9

例如,我有一个包含 img URL 的巨大 HTML 文件:http: //ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

我想获取这个 URL,假设它是整个文件中唯一的 url。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

当 URL 没有加号时才有效。

我如何也为 + 符号工作?

4

2 回答 2

8

你错过了字符类0-9 (也无用的猫)

grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9+-]*/[a-zA-Z0-9.,-+]*' file.html

略有改进,-i用于不区分大小写,仅匹配图像.jpg.jpeg.

grep -io 'http://ex[a-z.-]*/[a-z0-9+-]*/[a-z0-9.,-+]*[.jpe?g]' file.html

或者只是:

grep -io 'http://ex.example.*[.jpe?g]' file.html
于 2012-11-28T18:38:36.060 回答
2

以下修复了此特定情况的正则表达式 (包括数字和加号):

http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*

示范:

echo "For example, I have a huge HTML file that contains img URL: http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg"

我想获取这个 URL,假设它是整个文件中唯一的 url。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

仅当 URL 没有加号时才有效。我如何也为 + 符号工作?

cat file.html| grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*'

输出:

http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

不会提取所有有效的 URL。这个网站上有很多关于 URL 匹配的其他答案。

于 2012-11-28T18:48:59.033 回答