Regex使用的一点理解

这两天在弄Regex,发现自己获得不少的新知识

 

 Regex r = new Regex(@"[0-9a-z]{3,5}");
            
string[] tests = {"abc""123456""(aa22bb33)""ab"};
            
foreach (string test in tests)
          
{
                
if (r.IsMatch(test))
                

                    Response.Write(test);
                    Response.Write(
"<br/>"); 
                }

                
else
               
{
                   Response.Write(
"没有匹配的项");
                }

            }

结果是:

abc
123456
(aa22bb33)
没有匹配的项

这里的一个问题是:[2]{3,4}表示字符串中要出现连续的2的次数为3到4次,像34322sf是符合的,但是像34532222saf也是符合的字符串哦,因为后面的多余的2是不影响的,他已经满足了要求了就不用看后面的2了

但是这里还有一个问题:[0-9a-z]{3,4}表示字符串中出现的字符在0-9或者a-z中的次数为3到4次,而不是要相同的字符出现3到4次,这里的{}表示前面的Regex而不是结果,注意理解哦

 

 Regex r2 = new Regex(@"<img\s[\w/=.]+[\s]*/>");
        Match m 
= r2.Match("panjunsjdfsi<img src=image/logo.jpg />sfiwe");
        
if (m.Success)
        
{
            Response.Write(m.Index);
            Response.Write(m.Value);
        }

 

这个正则表达式还是有点好的,在从数据库中读取图片是很好的一个方法

其实以/>结尾后面不要加$,因为那个是字符的,而这里不是字符串,在字符串中要注意的特殊字符是

/ = : .

这几个字符串是要原型表示的

 

Regex r2 = new Regex(@"(\w+)://([^/:]+)(:d*)?([^# ]*)");
        Match m 
= r2.Match("panjuns http://www.baidu.com:8080/panjun jdfsgunsjdfe");
        
if (m.Success)
        
{
            Response.Write(m.Index
+"<br/>");
            Response.Write(m.Value);
            Regex r3 
= new Regex(@"(w+)+.+(\w+.(com.cn|net.cn|com|cn|net|org))");
            Match m2 
= r3.Match(m.Value.ToString());
            
if (m2.Success)
            
{
                Response.Write(m2.Index 
+ "<br/>");
                Response.Write(m2.Value);
            }

        }

 

这个是用来查找域名和url的,具体的我就不解释了……

 

 System.Text.RegularExpressions.Regex r = new Regex(@"^\d+$");
        System.Text.RegularExpressions.Regex r2 
= new Regex(@"^-\d+$");
        Int32[] ints 
=-11,11,243,-65435,-23 };
        
foreach (Int32 myint in ints)
        
{
            
if (r.IsMatch(myint.ToString()))
            
{
                Response.Write(myint.ToString() 
+ "<br/>");
            }

            
else
            
{
                Response.Write(
"没有匹配的项<br/>");
            }

        }

        Response.Write(
"<hr/>");
        
foreach (Int32 myint in ints)
        
{
            
if (r2.IsMatch(myint.ToString()))
            
{
                Response.Write(myint.ToString() 
+ "<br/>");
            }

            
else
            
{
                Response.Write(
"没有匹配的项<br/>");
            }

        }

 

以上是一些小的Regex东西,我要慢慢的进步……

posted on 2008-07-19 20:47  小顾问  阅读(1853)  评论(2编辑  收藏  举报