使用正规表达式检索字符串(VB.NET和C#)

和大家分享一下。本文来自 http://bingning.net/VB/SOURCE/string/regexmatch.html (冰凝制作室)

检测和正规表达式是否一致

使用正规表达式进行文字列的检索、研究和正规表达式一致的对象在输入文字列中能不能找到,使用Regex类的IsMatch方法。在下面的例子中研究了输入到TextBox1内的文字列中是否含有有邮件地址特征的文字列。

 [VB.NET]
  'Imports System.Text.RegularExpressions
  '写在源代码的最上边
  '检测输入到TextBox1中的文字列中是否还有具有邮件地址特征的文字列
 If Regex.IsMatch(TextBox1.Text, "\b[-\w.]+@[-\w.]+\.[-\w]+\b") Then
Console.WriteLine("表现了。")
 End If

 [C#]
 //using System.Text.RegularExpressions;
 //写在源代码的最上边
 //研究输入到TextBox1中的文字列中是否含有具有邮件地址的文字列
 if (Regex.IsMatch(TextBox1.Text, @"\b[-\w.]+@[-\w.]+\.[-\w]+\b"))
{
Console.WriteLine("发现了。");
}

使用正则表达式进行检索,取得结果

使用正则表达式进行文字列的检索,取得被检索的文字列时使用Regex类和Match方法。一致的要素,以Match对象的方式被返回。

在下边的例子中,从输入到TextBox1中的文字列中检索,表示具有邮件地址特征的所有的文字列。

 [VB.NET]
 'Imports System.Text.RegularExpressions
 '写在源代码的最上面
 '指定正则表达式模式,做成Regex类的实例
 Dim r As Regex
r = New Regex("\b[-\w.]+@[-\w.]+\.[-\w]+\b")
 '在TextBox1.Text中检索一个和正则表达式一致的对象
 Dim m As Match
m = r.Match(TextBox1.Text)
 '如下,也可以检索所有的一致的对象
 'Dim m As MatchCollection = r.Matches(TextBox1.Text)
 While m.Success
 '发现一致的对象的时候
 '表示发现部分的文字列
Console.WriteLine(m.Value)
'检索下一个一致的对象
m = m.NextMatch()
 End While

 [C#]
 //using System.Text.RegularExpressions;
 //写在源代码的最上边
 //指定正则表达式的模式,做成Regex类的实例
Regex r;
r = new Regex(@"\b[-\w.]+@[-\w.]+\.[-\w]+\b");
 //检索一个和TextBox1.Text内的和正规表达式一致的对象
Match m;
m = r.Match(TextBox1.Text);
 //如下,也可以检索所有的一致的对象
 //Dim mc As MatchCollection = r.Matches(TextBox1.Text)
 while (m.Success)
{
 //发现一致的对象的时候
 //表示发现部分的文字列
Console.WriteLine(m.Value);
 //検索检索下一个一致的对象
m = m.NextMatch();
}

指定Group化

下面显示了Group化的例子。在正则表达式中指定Group化的时候,以「(?<(数字或者是名字)>)」的形式表示。和正规表达式一致的Group,用Match类的Groups属性可以取得

下面的例子是检索在TextBox1被输入的字符串中,是否存在使用<a href="...">...</a>链接URL的字符串,然后输出结果。

 [VB.NET]
 'Imports System.Text.RegularExpressions
 '被写在源文件的最上面
 Dim r As Regex
 Dim m As Match
 ''指定正则表达式的模式和选项
 '做成Regex类的实例
r = New Regex( _
"<a\s+[^>]*href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>[^¥s>]+))[^>]*>(?<2>[^<]*)", _
RegexOptions.IgnoreCase Or RegexOptions.Compiled)
 '检索一个和正则表达式一致的对象
m = r.Match(TextBox1.Text)
 While m.Success
 '表示和正则表达式一致的Group(1)的文字列和位置
Console.WriteLine(("链接:" + m.Groups(1).Value + vbLf + _
"被链接使用的字符串:" + m.Groups(2).Value))
 '要是使用Result方法,也可以如下
 'Console.WriteLine(m.Result("链接:$1" + vbLf + _
 '    "被链接使用的字符串:$2"))
m = m.NextMatch()
 End While

 [C#]
 //using System.Text.RegularExpressions;
 //被写在源文件的最上边
Regex r;
Match m;
 //'指定正则表达式模式和选项
 //做成Regex类的实例
r = new Regex(
@"<a\s+[^>]*href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>[^\s>]+))[^>]*>(?<2>[^<]*)",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
 //检索一个和正则表达式一致的对象
m = r.Match(TextBox1.Text);
 while (m.Success)
{
 //表示和正则表达式一致的Group(1)的文字列和位置
Console.WriteLine("链接:" + m.Groups[1].Value
+ "\n被链接使用的字符串:" + m.Groups[2].Value);
 //要是使用Result方法也可以如下
//Console.WriteLine(m.Result("链接:$1\n被链接使用的字符串:$2"));
m = m.NextMatch();
}
posted on 2009-03-11 11:55  冰凝  阅读(815)  评论(0)    收藏  举报