前言
正则表达式是处理字符串的强大工具,特别是在文本搜索、替换和验证中。本文将100个常用的C#正则表达式进行分类,以帮助我们更快速地找到适合的正则表达式解决方案。
1. 基础匹配
这些正则表达式用于匹配一些基本的字符或字符串模式。
- 匹配任意字符:
string pattern = ".";
- 匹配任意空白字符:
string pattern = @"\s";
- 匹配任意非空白字符:
string pattern = @"\S";
- 匹配任意数字字符:
string pattern = @"\d";
- 匹配任意非数字字符:
string pattern = @"\D";
- 匹配任意字母数字字符:
string pattern = @"\w";
- 匹配任意非字母数字字符:
string pattern = @"\W";
- 匹配任意字母字符:
string pattern = @"[a-zA-Z]";
- 匹配任意小写字母:
string pattern = @"[a-z]";
- 匹配任意大写字母:
string pattern = @"[A-Z]";
2. 数字处理
这些正则表达式用于匹配和处理数字相关的字符串。
- 匹配单个数字:
string pattern = @"\d";
- 匹配多位数字:
string pattern = @"\d+";
- 匹配十六进制数字:
string pattern = @"\b[0-9A-Fa-f]+\b";
- 匹配包含数字的字符串:
string pattern = @"\b\d+\b";
- 匹配前导零的数字:
string pattern = @"\b0*(\d+)\b";
- 匹配负数:
string pattern = @"^-?\d+$";
3. 字符串匹配
这些正则表达式用于匹配特定类型的字符串,如以某个字符开头或结尾的字符串。
- 匹配以特定字符开头的字符串:
string pattern = @"^prefix";
- 匹配以特定字符结尾的字符串:
string pattern = @"suffix$";
- 匹配带连字符的单词:
string pattern = @"\b\w+-\w+\b";
- 匹配以字母开头的字符串:
string pattern = @"^[a-zA-Z]";
- 匹配以字母结尾的字符串:
string pattern = @"[a-zA-Z]$";
- 匹配带点的字符串:
string pattern = @"\w+\.\w+";
4. 特殊字符处理
这些正则表达式用于处理字符串中的特殊字符和标记。
- 匹配标点符号:
string pattern = @"[.,!?;:'""]";
- 匹配XML或HTML中的属性:
string pattern = @"(\w+)\s*=\s*(['""]?)(.*?)\2";
- 匹配成对的括号:
string pattern = @"\([^()]*\)";
- 匹配成对的HTML标签:
string pattern = @"<(\w+)>.*?</\1>";
- 匹配XML标签:
string pattern = @"<[^>]+>";
5. 空白字符处理
这些正则表达式用于处理字符串中的空白字符。
- 匹配单个空白字符:
string pattern = @"\s";
- 匹配一个或多个空白字符:
string pattern = @"\s+";
- 匹配行首的空白字符:
string pattern = @"^\s";
- 匹配行尾的空白字符:
string pattern = @"\s$";
- 匹配首尾带空格的字符串:
string pattern = @"^\s+|\s+$";
- 匹配具有多个空格的行:
string pattern = @"^\s+.*\s+$";
6. 行和段落处理
这些正则表达式适用于多行文本的处理,如匹配特定的行或段落。
- 匹配整行文本:
string pattern = @"^.*$";
- 匹配行首的字符串:
string pattern = @"^prefix";
- 匹配行尾的字符串:
string pattern = @"suffix$";
- 匹配多行字符串中的最后一行:
string pattern = @"(\n.*)?$";
- 匹配非空行:
string pattern = @"\S";
7. 复杂模式匹配
这些正则表达式处理更为复杂的匹配模式,如重复字符或成对符号。
- 匹配重复的字符:
string pattern = @"(.)\1";
- 匹配中间带空格的字符串:
string pattern = @"\w+\s+\w+";
- 匹配具有相同字符的连续单词:
string pattern = @"(\b\w+\b)\s+\1";
8. 日期和时间
这些正则表达式专门用于处理日期和时间格式。
- 匹配日期格式(dd/mm/yyyy):
string pattern = @"^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/\d{4}$";
9. 特定语言字符
这些正则表达式用于处理特定语言的字符,如汉字或双字节字符。
- 匹配双字节字符(比如中文):
string pattern = @"[^\x00-\xff]";
- 匹配汉字字符:
string pattern = @"[\u4e00-\u9fa5]";
10. 文件和路径处理
这些正则表达式用于处理文件路径、URL等格式。
- 匹配URL的主机部分:
string pattern = @"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)";
- 匹配URL的路径部分:
string pattern = @"(?:https?:\/\/)?(?:www\.)?[^\/]+(\/[^#?]+)";
示例代码
示例代码,演示如何在C#中使用这些正则表达式。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "Example text with some special patterns: 123-456, abc@def.com, http://example.com";
// 匹配带连字符的单词
string pattern = @"\b\w+-\w+\b";
MatchCollection matches = Regex.Matches(text, pattern);
Console.WriteLine("匹配带连字符的单词:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
// 匹配URL的主机部分
pattern = @"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)";
Match matchUrl = Regex.Match(text, pattern);
Console.WriteLine("\n匹配URL的主机部分:");
Console.WriteLine(matchUrl.Value);
}
}
在这个示例中,我们展示了如何使用正则表达式来匹配带连字符的单词和URL的主机部分。可以根据自己的需求进行修改和扩展。
总结
通过对这些正则表达式进行分类,我们可以更方便地找到适合当前需求的正则表达式。在实际开发中,正则表达式不仅可以简化代码,还能提高程序的执行效率和可维护性。