1.正则表达式能做什么?
简单总结一下,有:测试判断,查找提取,删除,替换字符串的功能.
1)测试判断:对于一个给定的字符串,我们可以加以测试其是否满足我们的特定字符串的规则的要求.例如,输入一个字符串,我们要对它进行测试,判断其是否是合法有效的IP地址字符串,以保证字符串是我们需要的。
2)查找提取:对于一个给定的字符串,我们查找出其中所有满足规则的子字符串.比如:我们要在一个字符串中,查找出所有的出现一个名字的位置,并提取满足规则的子字符串另加它用.
3)删除:对于一个给定字符串,我们要删除其中符合规则的所有子字符串,.如:我们要将一个字符串中所有出现"abc"的子字符串全删除.
4)替换:对于一个给定字符串,我们要替换其中符合规则的所有子字符串.如:我们要将一个字符串中所有出现"abc"的子字符串全替换成"ABCDE".
2.我们如何使用正则表达式
这里,我使用的是.NET类库所提供的一个正则表达式类:System.Text.RegularExpressions.Regex
当然,也有很多其他的组件提供正则判断引擎,只不过名称或方法名有点不同,但是基础的逻辑是一样的.
关于正则表达式规则字符串的写法,可查询相关资料文档(本blog有相关内容,自行查阅.),我这里只介绍如何使用正则表达式的一些简单示例.
3.一些示例
1)测试判断:使用Regex.IsMatch方法对字符串加以测试判断,看其是否是我们需要的特定格式的字符串.
//这里我使用一个IP正则表达式规则,能保证输入的字符串是IP地址字符串.
using System;
using System.Text.RegularExpressions;
class App
{
static void Main()
{
//这是IP正则表达式规则字符串(...由于是自己写的,可能不够精简...)
string pattern = @"^([0-2]{0,1}[0-9]{0,1}[0-9]{1}\.){3}[0-2]{0,1}[0-9]{0,1}[0-9]{1}$";
//简单编写一些测试字符串,如果有兴趣,可以自己增加测试字符串加以测试
string[] Inputs = { "255.255.255.0", "127.0.0.1", "djhfdj", "1272.2.2.1", "127.0.0.1a" };
foreach (string s in Inputs)
{
if (Regex.IsMatch(s, pattern)) //只需要这样一个方法调用,就可以自动判断出是否符合规则
Console.WriteLine(s+" 是正确的IP地址.");
else
Console.WriteLine(s + " 不是正确的IP地址.");
}
Console.Read();
}
}
2))查找提取:使用Regex.Match或Regex.Matchs方法查找并提取满足规则的子字符串
<1>//使用Regex.Match方法返回第一个满足正则判断规则的子字符串
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string pattern = @"abc";
//字符串Input是你需要加以操作的目的字符串
string Input = "fdkabcslabcd";
//使用Regex.Match方法,将从字符串Input中查找出第一个匹配pattern表达规则的子字符串
//并返回一个Match对象,此Match对象的Index就是在Input字符串中被找到的满足规则的子字符串索引位置,
//而Value属性就是满足规则的子字符串的被复制的子字符串
Match m = Regex.Match(Input, pattern);
if (m.Success) //判断是否成功
{
Console.WriteLine("在原字符串中的索引位置 "+m.Index + " 查找的结果 " + m.Value); }
else
Console.WriteLine("没有需要查找的字符串.");
Console.Read();
}
}
<2>使用Regex.Matchs方法返回所有满足规则的子字符串
using System;
using System.Text.RegularExpressions;
class App
{
static void Main()
{
string pattern = @"abc";
string Input = "dfkhabcfkdjabcek";
MatchCollection ms = Regex.Matches(Input, pattern);
foreach(Match m in ms)
{
Console.WriteLine("在原字符串中的索引位置 " + m.Index + " 查找的结果 " + m.Value);
}
Console.Read();
}
}
3)删除:使用Regex.Replace方法,将查找出来的子字符串替换成"",其实就是删除.
using System;
using System.Text.RegularExpressions;
class App
{
static void Main()
{
string pattern = @"abc";
string Input = "dfkhabcfkdjabcek";
string s = Regex.Replace(Input, pattern,"");
Console.WriteLine("删除前:" + Input);
Console.WriteLine("删除后:"+s);
Console.Read();
}
}
4)替换:使用Regex.Replace方法,将查找出来的子字符串替换成指定字符串,就是替换啦
using System;
using System.Text.RegularExpressions;
class App
{
static void Main()
{
string pattern = @"abc";
string Input = "dfkhabcfkdjabcek";
//直接使用Replace方法指定需要替换的字符串和要替换的字符串
string s = Regex.Replace(Input, pattern,"|ABC|");
Console.WriteLine("替换前:" + Input);
Console.WriteLine("替换后:"+s);
Console.Read();
}
}