網頁提取資料常用正則
匹配HTML標籤
<TAG\b[^> ]*>(.*?)</ TAG>
**相匹配的開放和關閉對一個特定的HTML標記。標記之間的任何捕捉到的第一個反向引用 。在正規表示式的問號,使明星懶,以確保它停止之前的第一個結束標記,而不是在最後,像一個貪婪的明星會做。這個正規表示式將無法正確匹配自己一樣,<TAG>one<TAG>two</TAG>one</TAG>
.
<([AZ] [A - Z0 - 9] *)\ B [^>]*>(.*?)</ \ 1>
將匹配的開幕式和閉幕式對任何HTML標記 。一定要關閉的大小寫。在此解決方案的關鍵是在正規表示式的使用反向 引用\
1 。標記之間的任何捕獲到第二個逆向引用 。該解決方案還將不匹配巢狀標記本身。
<TAG[^>]*>(.*?)</TAG>
選項:點匹配換行符;不區分大小寫
<([A-Z][A-Z0-9]*)[^>]*>(.*?)</\1>
選項:點匹配換行符;不區分大小寫
修剪空白
您可以輕鬆地修剪從一開始就和不必要的空白字串的結尾或在一個文字檔案的行,做一個正規表示式搜尋和替換。搜尋^ [\ t]
的+
分析與RegexBuddy
的正規表示式和替換刪除前導空格(空格和製表符)無關。搜尋[\ T + $
修剪尾隨空白。不要都將結合正規表示式^ [\ T] + | [\ T + $
。而不是[\ T]匹配一個空格或製表符,可以擴大到的字元類[\ T \ R \ N ]
如果你也想去掉換行符 。或者你也可以使用速記 \ S
。
前導空格
^[ \t]+
選項:^和$匹配換行符
尾隨空白
[ \t]+$
選項:^和$匹配換行符
#region 獲得字串中開始和結束字串中間得值
/// <summary>
/// 獲得字串中開始和結束字串中間得值
/// </summary>
/// <param name="begin">開始匹配標記</param>
/// <param name="end">結束匹配標記</param>
/// <param name="html">Html字串</param>
/// <returns>返回中間字串</returns>
public static MatchCollection GetMidValue(string begin, string end, string html)
{
Regex reg = new Regex("(?<=(" + begin + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return reg.Matches(html);
}
#endregion
/// <summary>
/// 獲得字串中開始和結束字串中間得值
/// </summary>
/// <param name="str"></param>
/// <param name="s">開始</param>
/// <param name="e">結束</param>
/// <returns></returns>
private string getvalue(string str, string start, string end)
{
Regex rg = new Regex("(?<=(" + start + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}
//正則抽取單個Table , 可根據table內的某個標識字元, good !
如果僅僅是以“會員資料”這樣的做為參考標識,用我上面寫的稍稍改造就可以了,問題的複雜在於,如果以“00”或者“444”做為參考標識,就要考慮到<table>
標籤巢狀的問題,既要保證取包含參考標識的最內層<table>
,又要保證<table>
和</table>
配對匹配
Match mm = Regex.Match(html, @"<table[^>]*>(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))\b" + "會員資料" + @"\b(?:(?!<table[^>]*>)[\s\S])*?(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))</table>", RegexOptions.IgnoreCase);
輸入的參考標識中如果有正則中有特殊意義的字元,需要對其進行預處理,另外需要在程式中進行異常處理,這個自己處理下吧
如果源字串中同時多處出現輸入的參考標識,這裡取第一個出現的參考標識所在的<table>
Match mm = Regex.Match(html, @"<table[^>]*>(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))\b" + "會員輸贏資料" + @"\b(?:(?!<table[^>]*>)[\s\S])*?(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))</table>", RegexOptions.IgnoreCase);
if (mm.Success)
{
//MessageBox.Show(mm.Value);
//MatchCollection mdd = GetMidValue("<td", "</td>", mm.Value);
//foreach (Match m in mdd)
//{
// for (int i = 1; i < m.Groups.Count; i++)
// {
// restult += m.Groups[i].Value;//就是你要的結果
// }
//}
MatchCollection mc = Regex.Matches(mm.Value, @"<td[^>]*>\s*(?<content>[\s\S]*?)\s*</td>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
for (int i = 1; i < m.Groups.Count; i++)
{
restult += m.Groups[i].Value + "\n";
}
}
MessageBox.Show(restult);
}
相關文章
- CURL抓取網頁內容並用正則提取。網頁
- js提取正則中的字串JS字串
- 如何在 jmeter 中用正則或者 json 提取列表裡所有資料JMeterJSON
- javascript 常用正則JavaScript
- Python lxml :從網頁HTML/XML提取資料PythonXML網頁HTML
- C#-正則,常用幾種資料解析-端午快樂C#
- Jmeter系列(27)- 詳解正則提取器JMeter
- PHP 正則提取字串中的美元PHP字串
- (一)如何使用 Parsel 和 XPath 進行網頁資料提取網頁
- 正則提取十六進位制顏色值
- Go語言中使用正則提取匹配的字串Go字串
- 使用PHP的正則抓取頁面中的網址PHP
- python 網頁文字提取Python網頁
- scope-sentry-資料洩露規則提取
- 爬蟲工作原理詳解:從網頁請求到資料提取爬蟲網頁
- 如何提取網頁上的顏色,網頁顏色程式碼提取工具ColorWell網頁
- 整理js 框架裡面常用正則JS框架
- Java : 常用重點正則標記Java
- Python-網頁轉義字元及正則全文匹配Python網頁字元
- SQL - 常用資料庫分頁SQL資料庫
- python淺談正則的常用方法Python
- 提取動態html網頁內容HTML網頁
- 資料的標準化與正則化
- sql 正則替換資料庫語句!SQL資料庫
- Java抓取網頁資料(原網頁+Javascript返回資料)網頁JavaScript
- Java中用正則從HTML標籤中提取文字2種方法JavaHTML
- 出來混總是要還的-JS正則常用的有四種操作: 驗證、切分、提取、替換JS
- 前端 - 開發中常用的正則校驗前端
- js表情正則 手機正則 郵箱正則JS
- PROC提取資料
- 網頁正文提取演算法介紹網頁演算法
- 常用正規表示式爬取網頁資訊及HTML分析總結網頁HTML
- win10系統如何提取網頁中視訊_win10提取網頁中視訊的圖文教程Win10網頁
- win10系統如何提取網頁中影片_win10提取網頁中影片的圖文教程Win10網頁
- Python爬蟲教程-19-資料提取-正規表示式(re)Python爬蟲
- 序列化模組,subprocess模組,re模組,常用正則
- 正則
- Python爬蟲教程-18-頁面解析和資料提取Python爬蟲