导航

« vb.net 获取pr值,Alexa排名源码vb.net (2008 2010) 多线程实例 及中止线程或取消方法  »

常用正则表达式实例

虚位以待 Regex

 

正则表达式是最为高效的信息查询公式,关于它的概念不再细说,学习一样东西从简单的实例开始是最好不过的,以下收集各种实用的正则表达式,为了统一,以下内容中的“内容”为源字符串,“正则”为正则表达式,“结果”就是查询结果,将不断更新。

1.正则 获取两个字符串之间的内容(不包换界定字符串)
内容:找到相关结果146个    正则:  (?<=结果)\d*(?=个)     结果:146
@获取网页标题内容: (?<=\<title\>).* ?(?=\</title\>)   (注:红色是边界,\<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)

5.ex          (?<=\<div5\>)([\s\S]*?)(?=\<\/div5\>)

<div5><d<div>Features:<br><br
<title>dkjfdkfjdk</title>

Fully compliant with DVB-S2 <br>
<title>dfdf</title>

Support 7days EPG<br>

 (?<=结果)\d*(?=个) </div5>

 6.asp正则提取实例  如提取 <div>和</div>之间的内容

Dim regEx, Match, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = "(<div>)(.[^<]*)(</div>)" ' 设置模式。
'regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
Set Matches = regEx.Execute(replace(rs("ebody"),"<br>","")) ' 执行搜索。
For Each Match in Matches ' 遍历 Matches 集合。
 Response.Write replace(Match.SubMatches(1)," ","<br>")
    Next

 

vb.net中实现
 

折叠ASP/Visual Basic Code复制内容到剪贴板
  1. Public Function searchE(ByVal allStr As StringByVal findStr As StringAs String '正则表达式   
  2.     Try  
  3.         Dim reg As New Regex(findStr)   
  4.   
  5.         Dim n As MatchCollection = reg.Matches(allStr)   
  6.   
  7.   
  8.         regNum = n.Count.ToString   
  9.         'Return n.Item(0).ToString   
  10.         Return n.Item(0).Groups(0).ToString() 'Item(0)一层; groups(0)二层,如多个(约 38,000,000 条)中 取38   
  11.     Catch ex As Exception   
  12.         ' MsgBox(ex)   
  13.         msgInfo("无效查询!", "")   
  14.   
  15.     End Try  
  16.     Return Nothing  
  17. End Function  

 C#中 正则表达式一次性替换多个字符(替换结果相同)

                sUpLevel = "ele◆ct sNa├me fr─om Sor";
                sUpLevel = Regex.Replace(sUpLevel, "◆├|─", "");

          对于要替换成不同的结果可以参考如下:
            var result = Regex.Replace("aaaaaa111bbbbbbbbbb222cccccc333ddddddddd", "111|222|333", (ma) =>
            {
                switch (ma.Value)
                {
                    case "111":
                        return "xxx";
                    case "222":
                        return "yyy";
                    case "333":
                        return "zzz";
                    default:
                        return ma.Value;
                }
            });
            Console.WriteLine(result);
 c#中验证是否有特殊字符,可验证多个(如果是验证其它条件可选择下方的@+方式)

                if (Regex.IsMatch(txtCate.Text, "◆|├|─|(|)"))
                {
                    cateInfo.Text = "分类中不能含有特殊字符";
                    return;
                }
C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
电话号码@"^(\d{3,4}-)?\d{6,8}$"
手机号码@"^[1]+[3,5]+\d{9}"
身份证号@"(^\d{17}(?:\d|x)$)|(^\d{15}$)"
验证输入为数字@"^[0-9]*$"
验证邮编@"^\d{6}$"


所有正则表达式语法的字符都需要转义。
特别字符   说明  
  $   匹配输入字符串的结尾位置。如果设置了   RegExp   对象的   Multiline   属性,则   $   也匹配   '\n'   或   '\r'。要匹配   $   字符本身,请使用   \$。  
  (   )   标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用   \(   和   \)。  
  *   匹配前面的子表达式零次或多次。要匹配   *   字符,请使用   \*。  
  +   匹配前面的子表达式一次或多次。要匹配   +   字符,请使用   \+。  
  .   匹配除换行符   \n之外的任何单字符。要匹配   .,请使用   \.  
  [  ]   标记一个中括号表达式的开始。要匹配   [],请使用   \[  ,\]。  
  ?   匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配   ?   字符,请使用   \?。  
  \   将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如,   'n'   匹配字符   'n'。'\n'   匹配换行符。序列   '\\'   匹配   "",而   '\('   则匹配   "("。  
  ^   匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配   ^   字符本身,请使用   \^。  
  {   }标记限定符表达式的开始。要匹配   {},请使用   \{, \}。  
  |   指明两项之间的一个选择。要匹配   |,请使用   \|。
 

  • 顶一下
虚位以待


  • 相关文章:


原创文章如转载,请注明:转载自落日故乡

本文链接地址:http://www.spersky.com/post/regularexpression.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

内容搜索


虚位以待

常用链接

最新评论及回复

Powered By Z-Blog

Copyright spersky All Rights Reserved.Theme Moonlight,Calf modified.n 浙ICP备16017820号-1