網頁提取資料常用正則
匹配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);
}
相關文章
- 用正則提取域名網址
- 如何在 jmeter 中用正則或者 json 提取列表裡所有資料JMeterJSON
- Python lxml :從網頁HTML/XML提取資料PythonXML網頁HTML
- javascript 常用正則JavaScript
- 最常用的正則
- Jmeter系列(27)- 詳解正則提取器JMeter
- PHP 正則提取字串中的美元PHP字串
- (一)如何使用 Parsel 和 XPath 進行網頁資料提取網頁
- 正則提取十六進位制顏色值
- python 網頁文字提取Python網頁
- scope-sentry-資料洩露規則提取
- Python-網頁轉義字元及正則全文匹配Python網頁字元
- 爬蟲工作原理詳解:從網頁請求到資料提取爬蟲網頁
- 如何提取網頁上的顏色,網頁顏色程式碼提取工具ColorWell網頁
- 整理js 框架裡面常用正則JS框架
- Java : 常用重點正則標記Java
- 正則提取車牌最後一位數字
- 常用正規表示式爬取網頁資訊及分析HTML標籤總結網頁HTML
- 提取動態html網頁內容HTML網頁
- sql 正則替換資料庫語句!SQL資料庫
- 出來混總是要還的-JS正則常用的有四種操作: 驗證、切分、提取、替換JS
- 數字,小數點正則,一段話提取數字
- Java中用正則從HTML標籤中提取文字2種方法JavaHTML
- 前端 - 開發中常用的正則校驗前端
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- js表情正則 手機正則 郵箱正則JS
- Python爬蟲教程-19-資料提取-正規表示式(re)Python爬蟲
- Python爬蟲教程-18-頁面解析和資料提取Python爬蟲
- Jmeter 常用後置處理器之正規表示式提取器、JSON 提取器、JSON JMESPath ExtractorJMeterJSON
- win10系統如何提取網頁中影片_win10提取網頁中影片的圖文教程Win10網頁
- 網頁資料抓取之噹噹網網頁
- 提取pdf指定頁
- 正則
- win10系統如何提取網頁中視訊_win10提取網頁中視訊的圖文教程Win10網頁
- 常用JS正則大全(2019年11月12日更新)JS
- 資料提取之jsonpathJSON
- ffmpeg提取aac資料
- 分頁練習-網頁開發常用網頁