我想從錨標記中提取的HTTP鏈接?應該提取的擴展名應該只是WMV文件。正則表達式提取網址移出錨標記
1
A
回答
1
正則表達式:
<a\\s*href\\s*=\\s*(?:(\"|\')(?<link>[^\"]*.wmv)(\"|\'))\\s*>(?<name>.*)\\s*</a>
[注意:\ S *是在幾個地方用來匹配可能出現在HTML額外的空格字符]
樣品C#代碼:
/// <summary>
/// Assigns proper values to link and name, if the htmlId matches the pattern
/// Matches only for .wmv files
/// </summary>
/// <returns>true if success, false otherwise</returns>
public static bool TryGetHrefDetailsWMV(string htmlATag, out string wmvLink, out string name)
{
wmvLink = null;
name = null;
string pattern = "<a\\s*href\\s*=\\s*(?:(\"|\')(?<link>[^\"]*.wmv)(\"|\'))\\s*>(?<name>.*)\\s*</a>";
if (Regex.IsMatch(htmlATag, pattern))
{
Regex r = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
wmvLink = r.Match(htmlATag).Result("${link}");
name = r.Match(htmlATag).Result("${name}");
return true;
}
else
return false;
}
MyRegEx.TryGetHrefDetailsWMV("<td><a href='/path/to/file'>Name of File</a></td>",
out wmvLink, out name); // No match
MyRegEx.TryGetHrefDetailsWMV("<td><a href='/path/to/file.wmv'>Name of File</a></td>",
out wmvLink, out name); // Match
MyRegEx.TryGetHrefDetailsWMV("<td><a href='/path/to/file.wmv' >Name of File</a></td>", out wmvLink, out name); // Match
2
因爲HTML的語法規則是如此寬鬆,這是相當困難與任何可靠性做(除非,說,你知道絕對肯定的是,所有的標籤將使用它們的屬性值周圍雙引號)。下面是爲宗旨一些相當一般的基於正則表達式代碼:
function extract_urls($html) {
$html = preg_replace('<!--.*?-->', '', $html);
preg_match_all('/<a\s+[^>]*href="([^"]+)"[^>]*>/is', $html, $matches);
foreach($matches[1] as $url) {
$url = str_replace('&', '&', trim($url));
if(preg_match('/\.wmv\b/i', $url) && !in_array($url, $urls))
$urls[] = $url;
}
preg_match_all('/<a\s+[^>]*href=\'([^\']+)\'[^>]*>/is', $html, $matches);
foreach($matches[1] as $url) {
$url = str_replace('&', '&', trim($url));
if(preg_match('/\.wmv\b/i', $url) && !in_array($url, $urls))
$urls[] = $url;
}
preg_match_all('/<a\s+[^>]*href=([^"\'][^> ]*)[^>]*>/is', $html, $matches);
foreach($matches[1] as $url) {
$url = str_replace('&', '&', trim($url));
if(preg_match('/\.wmv\b/i', $url) && !in_array($url, $urls))
$urls[] = $url;
}
return $urls;
}
1
我不會用正則表達式做到這一點 - 我可能會使用jQuery:
jQuery('a[href$=.wmv]').attr('href')
這種比較混亂的簡化正則表達式的例子,其(如說明)不應對挑剔/複雜的標記,你會希望瞭解爲什麼DOM解析器是不是這種類型的問題,一個正則表達式更好。
相關問題
- 1. 正則表達式來從錨標記
- 2. 錨標記的正則表達式2
- 3. PHP錨標記正則表達式
- 4. 正則表達式提取XML標記
- 5. C#正則表達式提取標記
- 6. 正則表達式:提取HTTP和標題自錨標記屬性與PHP
- 7. 正則表達式地址提取
- 8. 正則表達式採取網址
- 9. 取下錨標記,並使用正則表達式
- 10. 正則表達式從HTML文本中提取錨標籤Flex
- 11. 正則表達式從網頁中提取Favicon網址
- 12. 「格式不正確」的錨定標記正則表達式
- 13. 正則表達式 - 替換風格標記中的網址
- 14. 正則表達式:從定位標記中查找網址
- 15. C#正則表達式提取標籤
- 16. 正則表達式提取標籤
- 17. 正則表達式來提取的YouTube/VIMEO網址
- 18. 使用正則表達式提取網址
- 19. 使用正則表達式提取網址的一部分
- 20. 提取網站地址的正則表達式
- 21. 正則表達式錨:VBScript.RegExp
- 22. 正則表達式提取
- 23. 正則表達式提取
- 24. javascript正則表達式從錨定標記中提取錨文本,URL和目標
- 25. 所有屬性錨定標記的正則表達式
- 26. 正則表達式剝離錨標記之間的一切
- 27. 正則表達式來匹配錨標記和它的href
- 28. 解析無效錨標記BeautifulSoup或正則表達式
- 29. 替換URL除了錨標記Jascript正則表達式
- 30. 替換URL到錨標記使用Python的正則表達式
你有你試圖以匹配一個例子嗎? – 2009-06-08 17:04:04
我試圖匹配以下: listbox selection video 我需要一個正則表達式,應該給我: http://www.highoncoding.com/videos/ListBoxSelection.wmv 謝謝, – azamsharp 2009-06-08 17:05:10