
正则表达式是最为高效的信息查询公式,关于它的概念不再细说,学习一样东西从简单的实例开始是最好不过的,以下收集各种实用的正则表达式,为了统一,以下内容中的“内容”为源字符串,“正则”为正则表达式,“结果”就是查询结果,将不断更新。
1.正则 获取两个字符串之间的内容(不包换界定字符串)
内容:找到相关结果146个 正则: (?<=结果)\d*(?=个) 结果:146
@获取网页标题内容: (?<=\<title\>).* ?(?=\</title\>) (注:红色是边界,\<title\> 代表查找<title>,就是说(?<=左边界)
2.从网址中提取主域名:
^.+\.(com.cn|com|net.cn|net|org.cn|org|gov.cn|gov|cn|mobi|me|info|name|biz|cc|tv|asia|hk|网络|公司|中国)\/
3.懒惰匹配
表达式1:(?<=links \().*?(?=\)) 与表达式2: (?<=links \().*(?=\)) (注:注意红色部分的区别)
查找内容:Pages (464)</span></li>Inlinks (562)</a>)
表达式1结果:562 表达式2结果:562)</a> (注:表达式1中多了一个?,表示匹配尽可能少的字符)
就单单取得562这个结果也可以这样:(?<=links \().*(?=\)<) (注:红色部分是当前唯一)
如果表达式:Inlinks \(.*?\) 则结果为 Inlinks (562)
4.多层匹配
表达式:约 (\d*?),(\d*?),(\d*?) 条
查找内容:找到约 38,000,000 条结果
结果:约 38,000,000 条 (注:可单独取出逗号隔开的数字如 38)
vb.net中实现
- Public Function searchE(ByVal allStr As String, ByVal findStr As String) As String '正则表达式
- Try
- Dim reg As New Regex(findStr)
- Dim n As MatchCollection = reg.Matches(allStr)
- regNum = n.Count.ToString
- 'Return n.Item(0).ToString
- Return n.Item(0).Groups(0).ToString() 'Item(0)一层; groups(0)二层,如多个(约 38,000,000 条)中 取38
- Catch ex As Exception
- ' MsgBox(ex)
- msgInfo("无效查询!", "")
- End Try
- Return Nothing
- End Function