Regex.Split方法分割字符串,示例如下:
/// <summary>
/// 正则表达式分割字符串一
/// </summary>
static void RegexSplit()
{
string str = "1.Fish 2.Cat 3.Dog 4.tigger 30.lion";
string pattern = @"\b\d{1,2}\.\b"; //\b单词开头或结整,匹配"1. 2. ..."这样的字符
//分割,与string中的Split方法一等价
var arr = Regex.Split(str, pattern);
foreach (var item in arr)
{
Console.WriteLine(item+":"+item.Length);
}
}
/// <summary>
/// 正则表达式分割字符串二
/// </summary>
static void RegexSplit1()
{
string str = "Fish_Cat.Dog@tigger-lion";
string pattern = @"_|\.|@|-"; //多个字符分割
var arr = Regex.Split(str, pattern, RegexOptions.IgnorePatternWhitespace);
foreach (var item in arr)
{
Console.WriteLine(item + ":" + item.Length);
}
}
结果:
Regex.Replace方法替换字符串,示例如下:
/// <summary>
/// 正则表达式替换字符串一
/// </summary>
static void RegexReplace()
{
string str = "price: 100.98";
string pattern = @"\b\d+\.\d+\b"; //匹配字符串中的数字“100.98"
Console.WriteLine(Regex.Replace(str,pattern,"$$$&"));
}
/// <summary>
/// 正则表达式替换字符串二
/// </summary>
static void RegexReplace1()
{
string str = "<html>12345</html>";
string pattern = @"<|>|/"; //替换多个匹配的字符
Console.WriteLine(Regex.Replace(str, pattern, " "));
}
结果:
Regex.Match方法,默认匹配到第一项,示例如下:
static void RegexMatch()
{
string str = "<html>12345<body>5678</body></html>";
string pattern = @"\d+"; //匹配数字
//默认匹配到第一项
var match = Regex.Match(str, pattern);
//匹配成功
while(match.Success)
{
//匹配项的值
Console.WriteLine(match.Value);
//下一个匹配项
match = match.NextMatch();
}
}
结果:
Regex.Matchs方法,匹配到的所有项,示例如下:
static void RegexMatchs()
{
string str = "<html>12345<body>5678</body></html>";
string pattern = @"\d+";
//获取所有匹配项
var matchs = Regex.Matches(str,pattern);
Console.WriteLine(matchs.Count);
//遍历匹配项
foreach (Match item in matchs)
{
//输出匹配项的值及位置
Console.WriteLine(item.Value+",pos:"+item.Index);
Console.WriteLine(item.Result("$&,匹配替换后")); //等同于Replace
}
}
结果:
Match对象中的Groups(分组)属性,匹配到的所有项,示例如下:
/// <summary>
/// 正则匹配分组,正则表达式中要使用分组才能使用
/// </summary>
static void RegexGroups()
{
string str = "Year: yyyy-MM-dd";
//正则中有分组
string pattern = @"\b([y]{2,4})-([M]{1,2})-([d]{1,2})\b";
//获取匹配项
var match = Regex.Match(str, pattern);
//匹配成功
if (match.Success)
{
//将匹配到的项分组输出
for (var i = 0; i < match.Groups.Count; i++)
{
Console.WriteLine(match.Groups[i].Value);
}
}
}
结果: