C#中正则表达式的详细讲解,包括基本概念、常用方法和一些示例。
基本概念
正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串的模式。正则表达式可以用来检查一个字符串是否符合某种模式、提取匹配的子字符串、替换匹配的子字符串等。
命名空间
在C#中,正则表达式相关的类位于 System.Text.RegularExpressions
命名空间中。因此,使用正则表达式时需要引入这个命名空间:
using System.Text.RegularExpressions;
常用类
- Regex:表示不可变正则表达式模式。提供静态方法来执行匹配、替换等操作。
- Match:表示单个匹配结果。
- MatchCollection:表示多个匹配结果的集合。
- Group:表示单个捕获的子匹配。
- GroupCollection:表示多个捕获的子匹配的集合。
常用方法
- Regex.IsMatch:检查字符串是否包含与指定正则表达式匹配的子字符串。
- Regex.Match:在字符串中查找与指定正则表达式匹配的第一个子字符串。
- Regex.Matches:在字符串中查找与指定正则表达式匹配的所有子字符串。
- Regex.Replace:使用指定的替换字符串替换与指定正则表达式匹配的子字符串。
- Regex.Split:使用正则表达式将字符串拆分为子字符串数组。
示例
1. 检查字符串是否匹配
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, World!";
string pattern = "Hello";
bool isMatch = Regex.IsMatch(input, pattern);
Console.WriteLine(isMatch); // 输出: True
}
}
2. 查找第一个匹配
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, World!";
string pattern = "Hello";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
Console.WriteLine(match.Value); // 输出: Hello
}
}
}
3. 查找所有匹配
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, World! Hello, C#!";
string pattern = "Hello";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine(match.Value); // 输出: Hello, Hello
}
}
}
4. 替换匹配的子字符串
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, World!";
string pattern = "World";
string replacement = "C#";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine(result); // 输出: Hello, C#!
}
}
5. 拆分字符串
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "one,two,three";
string pattern = ",";
string[] parts = Regex.Split(input, pattern);
foreach (string part in parts)
{
Console.WriteLine(part); // 输出: one, two, three
}
}
}
正则表达式模式
正则表达式模式是由字符和元字符组成的字符串。以下是一些常用的元字符和模式:
.
:匹配任何单个字符(除了换行符)。*
:匹配前面的子表达式零次或多次。+
:匹配前面的子表达式一次或多次。?
:匹配前面的子表达式零次或一次。[]
:匹配指定范围内的任何单个字符。()
:用于分组。^
:匹配字符串的开始。$
:匹配字符串的结束。\d
:匹配任何数字(等同于[0-9]
)。\D
:匹配任何非数字(等同于[^0-9]
)。\w
:匹配任何字母数字字符(等同于[a-zA-Z0-9_]
)。\W
:匹配任何非字母数字字符(等同于[^a-zA-Z0-9_]
)。\s
:匹配任何空白字符(包括空格、制表符、换行符等)。\S
:匹配任何非空白字符。
示例:匹配 [X,X,X,X]
格式的字符串
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "这是测试字符串 [1,2,3,4] 这里还有另一个 [5.5,6.6,7.7,8.8] 结束";
List<string> matches = FindPatternMatches(input);
foreach (var match in matches)
{
Console.WriteLine(match);
}
}
static List<string> FindPatternMatches(string input)
{
// 定义正则表达式模式,匹配 [X,X,X,X]
string pattern = @"\[(.*?)\]";
// 使用正则表达式匹配输入字符串
MatchCollection matches = Regex.Matches(input, pattern);
// 存储匹配结果,去掉方括号
List<string> result = new List<string>();
foreach (Match match in matches)
{
// 去掉方括号
string cleanedMatch = match.Value.Trim('[', ']');
result.Add(cleanedMatch);
}
return result;
}
}
标签:匹配,string,C#,System,正则表达式,input,字符串,using
From: https://blog.csdn.net/zhwanwangwang/article/details/145206860