C#正则表达式Regex类的使用

C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类。这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间所在DLL基本上在所有的项目模板中都不需要单独去添加引用,可以直接使用。

1、定义一个Regex类的实例

Regex regex = new Regex(@"\d");
这里的初始化参数就是一个正则表达式,“\d”表示配置数字。

2、判断是否匹配

判断一个字符串,是否匹配一个正则表达式,在Regex对象中,可以使用Regex.IsMatch(string)方法。

regex.IsMatch("abc"); //返回值为false,字符串中未包含数字
regex.IsMatch("abc3abc"); //返回值为true,因为字符串中包含了数字

3、获取匹配次数

使用Regex.Matches(string)方法得到一个Matches集合,再使用这个集合的Count属性。

regex.Matches("abc123abc").Count; 
返回值为3,因为匹配了三次数字。

4、获取匹配的内容

使用Regex.Match(string)方法进行匹配。

regex.Match("abc123abc").Value;
返回值为1,表示第一个匹配到的值。

5、捕获

正则表达式中可以使用括号对部分值进行捕获,要想获取捕获的值,可以使用Regex.Match(string).Groups[int].Value来获取。

Regex regex = new Regex(@"\w(\d*)\w"); //匹配两个字母间的数字串
regex.Match("abc123abc").Groups[0].Value; //返回值为“123”。

using System;
using System.Text.RegularExpressions;
namespace Magci.Test.Strings
{
    public class TestRegular
    {
        public static void WriteMatches(string str, MatchCollection matches)
        {
            Console.WriteLine("\nString is : " + str);
            Console.WriteLine("No. of matches : " + matches.Count);
            foreach (Match nextMatch in matches)
            {
                //取出匹配字符串和最多10个外围字符
                int Index = nextMatch.Index;
                string result = nextMatch.ToString();
                int charsBefore = (Index < 5) ? Index : 5;
                int fromEnd = str.Length - Index - result.Length;
                int charsAfter = (fromEnd < 5) ? fromEnd : 5;
                int charsToDisplay = charsBefore + result.Length + charsAfter;
                Console.WriteLine("Index: {0},\tString: {1},\t{2}", Index, result, str.Substring(Index - charsBefore, charsToDisplay));
            }
        }           

        public static void Main()
        {
            string Str = @"My name is Magci, for short mgc. I like c sharp!";
            //查找“gc”
            string Pattern = "gc";
            MatchCollection Matches = Regex.Matches(Str, Pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
            WriteMatches(Str, Matches);
            //查找以“m”开头,“c”结尾的单词
            Pattern = @"\bm\S*c\b";
            Matches = Regex.Matches(Str, Pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
            WriteMatches(Str, Matches);
        }
    }
} 
时间: 2024-10-10 05:09:06

C#正则表达式Regex类的使用的相关文章

C#正则表达式Regex类的介绍

一.在C#中,要使用正则表达式类,请在源文件开头处添加以下语句: using System.Text.RegularExpressions; 二.RegEx类常用的方法 1.静态Match方法 使用静态Match方法,可以得到源中第一个匹配模式的连续子串. 静态的Match方法有2个重载,分别是 Regex.Match(string input, string pattern); Regex.Match(string input, string pattern, RegexOptions opt

C#正则表达式Regex类的用法

1.字符串替换 例如我想把如下格式记录中的NAME值修改为WANG string line="ADDR=1234;NAME=ZHANG;PHONE=6789"; Regex reg = new Regex("NAME=(.+);"); string modified = reg.Replace(line, "NAME=WANG;"); 修改后的字符串为 ADDR=1234;NAME=WANG;PHONE=6789 2.字符串匹配 例如我想提取刚才

C#正则表达式编程(二):Regex类用法

上一篇讲述了在C#中有关正则表达式的类之间的关系,以及它们的方法,这一篇主要是将Regex这个类的用法的,关于Match及MatchCollection类会在下一篇讲到.对于正则表达式的应用,基本上可以分为验证.提取.分割和替换.仅仅利用Regex类就可以实现验证和简单替换.利用Regex类实现验证经历2009年的备案和DNS停止解析风波之后,大部分的带有反馈性的网站和论坛都对一些敏感词进行了过滤,包含有这类敏感词的文章要么内容被替换要么被禁止发表,利用Regex类就可以实现这个功能,下面是一个

编写一个简单的正则表达式工具类

跟着视频的讲解,也亲手敲了这么一个正则表达式的类,感觉很不错,真是温故而知新,本来想把注释写的逼格高一点的,今天晚了有点累,先简单的写一下,有时间了再完善完善. <?php class regexTool{ //内置一些常用的正则表达式 private $validate = array( 'require'   =>  '/.+/', 'email'     =>  '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'url'    

正则表达式工具类

一个利用正则表达式来从文本中过滤提取数据的工具类.可以用来抓取网页后过滤所需的文本.^_^ 正则表达式语法规则可参考:http://blog.csdn.net/clementad/article/details/46661279 代码如下: package com.xjj.util; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.P

Hutool之正则表达式工具类——ReUtil

前言 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能.就比如说我要匹配一段文本中的某些部分,我们需要这样做: Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); Matcher matcher = pattern.matcher(content); if (matcher.find()) { String result= matcher.group(); } 其

4.C#学习之正则表达式&amp;&amp;Regex

正则表达式(Regular expressions)是一套语法匹配规则,各种语言,如Perl, .Net和Java都有其 对应的共享的正则表达式类库.在.Net中,这个类库叫做Regex. 以下是Regex下的几个静态方法: Escape: 对字符串中的regex中的转义符进行转义:       IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值:       Match: 返回Match的实例:       Matches: 返回一系列的Match的方法:       Repla

正则表达式工具类单例

/// <summary> /// 正则表达式工具类单例 /// </summary> public class RegexTool { private static volatile RegexTool regex = null; private static object syncRoot = new Object(); /// <summary> /// 注册需要转换的类型 /// </summary> private RegexTool() { }

C# Regex类用法

使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是实例方法 var source = "刘备关羽张飞孙权";//Regex regex = new Regex("孙权");//if (regex.IsMatch(source))//{// Console.WriteLine("字符串中包含有敏感词:孙权!&q