正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;验证文本以确保它匹配预定义的模式(如电子邮件地址);提取、编辑、替换或删除文本子字符串;将提取的字符串添加到集合以生成报告。 对于处理字符串或分析大文本块的许多应用程序而言,正则表达式是不可缺少的工具。,主要是用在以下几个方面。
查找一般也有两个应用场景,一是在做表单输入验证,此时需用到Regex类的IsMatch方法。另一个是当你需要在一大段文本中查找出符合规则的内容时,这时要用到Regex类的Matche或Matches方法。
当在服务端要对表单输入做验证的时候,我们通常会这样做,代码如下。
/// <summary> /// 表单输入验证时 /// </summary> [TestMethod] public void RegexFind1() { bool result = Regex.IsMatch("0717-11112222", @"^0\d{2,3}-\d{8}$",RegexOptions.IgnoreCase); }
返回结果为bool值,注意这里的正则我用到了两个元字符^和$,关于它们的作用我们后面会讲到。
当我们需要在一大段文本中查找符合定义规则的内容时,我们通常会像下面这样做,代码如下。
/// <summary> /// 从一段文本中查找符合规则的字符串 /// </summary> [TestMethod] public void RegexFind2() { List<string> result = new List<string>(); string input = "027-11112222@0717-22223333@020-55552222@0769-14528745"; string pattern = @"0\d{2,3}-\d{8}"; MatchCollection matchList= Regex.Matches(input, pattern, RegexOptions.IgnoreCase); if (matchList != null && matchList.Count > 0) { foreach (Match match in matchList) { result.Add(match.Value); } } }
返回结果是一个列表,如下图。
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" alt="" />
关于替换,通常是通过调用 Regex类的Replace 方法替换匹配正则表达式模式的文本,得到我们想要的结果。示例代码如下。
/// <summary> /// 将输入字符串中的Mr.,Mrs.,Miss.和Ms.替换成空格 /// </summary> [TestMethod] public void RegexReplace() { string input = "Mr. Henry Hunt,Ms. Sara Samuels,Abraham Adams,Ms. Nicole Norris"; string pattern = @"(Mr\.?\s|Mrs\.?\s|Miss\s|Ms\.?\s)"; string result = Regex.Replace(input,pattern,string.Empty); }
程序输出结果如下图。
可以发现,符合规则的内容都被移除了。
分割暂时还没有用过,待后面再补充。。。