使用正规表达式检索字符串(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();
}
浙公网安备 33010602011771号