正则表达式提供了功能强大、灵活而又高效的方法来处理文本。 正则表达式丰富的泛模式匹配表示法使你可以快速分析大量文本,以便:
-
查找特定字符模式。
-
验证文本以确保它匹配预定义模式(如电子邮件地址)。
-
提取、编辑、替换或删除文本子字符串。
-
将提取的字符串添加到集合中,以便生成报告。
对于处理字符串或分析大文本块的许多应用程序而言,正则表达式是不可缺少的工具。
定义正则表达式
-
字符转义
-
字符类
-
定位点
-
分组构造
-
限定符
-
反向引用构造
-
备用构造
-
替换
-
杂项构造
以下内容只是一部分经常使用的正则表达式:
模式 | 解释 |
---|---|
\$ | 在输入字符串中查找美元符号 ($ ) 的一个匹配项。 正则表达式模式字符串包含一个反斜杠来指示按字面解释美元符号而非将其作为正则表达式定位点。 单独的 $ 符号将指示正则表达式引擎应尝试在字符串的末尾开始匹配。 为了确保当前区域性的货币符号不被错误解释为正则表达式符号,该示例调用 Regex.Escape方法对该字符进行转义。 |
\s* | 查找空白字符的零个或多个匹配项。 |
[-+]? | 查找正好或负号的零个或一个匹配项。 |
([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?) | 外部括号将此表达式定义为捕获组或子表达式。 如果找到匹配项,则有关匹配字符串的此部分的信息可以从第二个 Group] 对象中检索(该对象位于 GroupCollection 属性所返回的 Match.Groups对象中)。 集合中的第一个元素表示整个匹配项。 |
[0-9]{0,3} | 查找十进制数字0到9的另到三个匹配项。 |
(,[0-9]{3})* | 查找后跟三个十进制数字的组分隔符的零个或多个匹配项。 |
\. | 查找小数分隔符的一个匹配项。 |
[0-9]+ | 查找一个或多个十进制数字。 |
(\.[0-9]+)? | 查找后跟至少一个十进制数字的小数分隔符的零个或一个匹配项。 |
在输入字符串中找到每个子模式,则匹配成功,并将包含有关匹配的信息的 **Match**对象添加到 **MatchCollection** 对象。
实例1
匹配m开头e结尾:
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace 匹配m和n
{
internal class Program
{
static void Main(string[] args)
{
string str = "make maze and manage to measure it";
Console.WriteLine("Matching words start with 'm' and ends with 'e':");
showMatch(str, @"\bm\S*e\b");
}
private static void showMatch(string text, string expr)
{
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
}
}
}
实例2
替换掉多余的空格:
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace _12_9
{
internal class Program
{
static void Main(string[] args)
{
string input = "Hello Werld";
string pattern = "\\s+";
string repalcement = " ";
Regex rgx = new Regex(pattern);
string regex= rgx.Replace(input,repalcement);
Console.WriteLine("Original String:{0}",input);
Console.WriteLine("Replacement String:{0}",regex);
}
}
}
总结:
正则表达式是非常强大的工具,但它们也可能变得非常复杂。在编写复杂的正则表达式时,确保对其进行充分测试以验证其行为是否符合预期。