![](/img/trans.png)
[英]How, using .NET RegEx, do I parse an HTML file and find 1. External links. 2. Internal links
[英]Regex to find external links from the html file using grep
從過去的幾天開始,我正在嘗試開發一個正則表達式,使用grep從提供給它的網頁中獲取所有外部鏈接。
這是我的grep命令
grep -h -o -e "\(\(mailto:\|\(\(ht\|f\)tp\(s\?\)\)\)\://\)\{1\}\(.*\?\)" "/mnt/websites_folder/folder_to_search" -r
現在grep似乎返回該給定行中的外部鏈接之后的所有內容
例
如果一個html文件在同一行包含這樣的東西
谷歌
https://yahoo.com'>雅虎
然后給定的grep命令返回以下結果
http://www.google.com">Google</a><p><a href='https://yahoo.com'>Yahoo</a></p>
這里的想法是,如果一個html文件在同一行中包含多個鏈接( irrespective in a,img etc
),那么正則表達式應該只獲取鏈接而不是該行的所有內容
我設法在rubular.com中開發了相同的正則表達式如下
("|')(\b((ht|f)tps?:\/\/)(.*?)\b)("|')
與上面的輸入工作,但我不能在grep中復制相同的任何人可以幫助我無法修改html文件,所以不要求我這樣做,我也不能尋找每個特定的標簽,並檢查他們的屬性到得到外部鏈接,因為它加占處理時間,我的應用程序不要求
謝謝
試試這個:
cat / path / to / file |
egrep -o“(mailto | ftp | http(s)?://){1} [^'\\”] +“
egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file
每行輸出一個鏈接。 它假設每個鏈接都在單引號或雙引號內。 要排除某些某些域鏈接,請使用-v
:
egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file | egrep -v "yahoo.com"
默認情況下,grep會打印出找到匹配項的整行。 -o
開關僅選擇一行的匹配部分。 請參見手冊頁 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.