正則表達式能根據設置匹配各類數據(好比:e-mail地址,電話號碼,身份中號碼等等)。正則表達式功能強大,使用靈活,C#,Java,JavaScript等多種語言都支持正則表達式。在互聯網上「抓取數據」更是少不了使用正則表達式。今天我要說的是在C#中使用正則表達式自動匹配並獲取所須要的數據。
從下面是某個IP查詢網站返回查詢結果的一個部分(字符串),如今就是要從這個字符串中獲取「查詢結果1:」後面的「北京市 網通」。
<
td
align
="center"
><
ul
><
li
>
查詢結果1:北京市 網通
</
li
><
li
>
查詢結果2:北京市 網通
</
li
><
li
>
查詢結果3:北京市 網通
</
li
></
ul
></
td
>
C#相關代碼以下:
string
srcString
=
"
<td align=\
"
center\
"
><ul><li>查詢結果1:北京市 網通</li><li>查詢結果2:北京市 網通</li><li>查詢結果3:北京市 網通</li></ul></td>
"
;
// 匹配 "<li>查詢結果1:" 與 "</li>" 之間的全部字符的正則表達式
string
regexStr
=
"
<li>查詢結果1:(?<key>.*?)</li>
"
;
Regex r
=
new
Regex(regexStr, RegexOptions.None);
Match mc
=
r.Match(srcString);
string dataStr
= mc.Groups[
"
key
"
].Value;
說明:
這裏最關鍵的是設置正則表達式:
"
<li>查詢結果1:(?<key>.*?)</li>
"。
字符 正則表達式 |
描述 網站 |
<key> spa |
根據key獲取由正則表達式匹配的值。 ip |
. ci |
匹配除 "\n" 以外的任何單個字符。 字符串 |
* string |
匹配前面的子表達式零次或屢次。 io |
? table |
跟在任何一個其餘限制符(*, +, ?, {n}, {n,}, {n,m})後面時,匹配模式是非貪婪的;非貪婪模式儘量少的匹配所搜索的字符串,而默認的貪婪模式則儘量多的匹配所搜索的字符串。 互聯網 |
dataStr 就是咱們要得的數據:「北京市 網通」。