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("没有匹配的项");
}
}
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);
}
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);
}
}
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/>");
}
}
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东西,我要慢慢的进步……