c# Regex常用

 

学习工具: 下载

 

一个例子


  

string value = " 123 " ;
Regex re
= new Regex( ^ [0-9 ]{1,2} $);
if ( ! re.IsMatch(value))
{

}

上面的代码用来判断字符串以数字开头和结尾,并且最多有2位。

 


  
Regex re = new Regex( ^ [ 0 - 9 ]{ 1 , 2 }$);

 

 解释:

 这句:声明一个新的Regex,

^表示:匹配字符串开始字符

$表示:匹配结尾字符。

[0-9]:匹配的数据类型。和\d异曲同工。

{1,2}:匹配数据重复的次数。在这里表示出现了一次或两次

 

详解:

一:Regex语法

  (1)^、$

  匹配数据:1234567;

 Regex : ^[0-9]

 结果:1

匹配以数字开头的一个字符

   数据改为:h123456;

   Regex:^[0-9]

   结果:无

而当[]里该为a-z;结果就是h了。$和^类似,如下图

另外一种意思,当^在[^n]里面,匹配除了n以为的任意字符

例如

    匹配数据:4525

    Regex:[^45]

    结果:2

 

(2)[ ]:匹配数据类型

  • \d:匹配数字类型数据,于[0-9]相同

例如

     匹配数据:1234567

     Regex:\d[0-9]

     结果:12、34、56    3组 (7被滤掉)

 

  • \D:匹配非数字,于[^\d]表示相同

例如

    匹配数据:123d

  Regex:\D

     结果:d

  • (.)点:匹配换行符以外的任意字符
  •  \w(小写):匹配字母或数字或下划线或汉字
  • \s:  (小写):   匹配任意的空白符
  • \W(大写): 于小写相反


(3){}:匹配数据重复次数

  • *表示重复零次或更多次,于\d{0,}(表示0次到无限次)相同

例如:

      匹配数据:123K4567

      Regex:\d*

      结果:123、 、4567(注意中间的空值)

  • +表示重复一次或更多次
  • ?表示重复一次或零次
  • {n}重复n次

 例如

     匹配数据:123K45678

     Regex:\d{4}

     结果:4567    (数字在K后有连续出现过4次,在前面没有)

例如

     匹配数据:12K45678

     Regex:\d{2,3}

     结果为:12、456、78 (从多位到少取,从前往后取,字符分开取,揣摩…)

 

二 Regex在.net上

 (1) IsMatch重载列表:(判断是否存在)

  •  IsMatch(string):判断字符串中是否存在匹配项,实例如开头例子。
  •  IsMatch(string,int):从指定的开始位置判断是否存在匹配项
  •  IsMatch(string,string):从外部传递会正则表达式及要匹配的数据,而不是声明的时候定义好正则表达式
  •  IsMatch(string,string,RegexOptions):在匹配选项下匹配数据

     例

      

 Regex.IsMatch("www.GOOGLE.com", "^[a-z.]{1,20}$", RegexOptions.IgnoreCase)

RegexOptions.IgnoreCase:表示不区分大小写

(2)Match(记录匹配到的数据)已重载

string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";

Regex r = new Regex(pat, RegexOptions.IgnoreCase);
 Match m = r.Match(text);

Console.WriteLine("{0}",m.Value.ToString ());
Console.ReadKey();

(3)Replace (替换匹配到的数据)

 

 

 static void Main(string[] args)
        {

            string text = "four score and seven years ago";
            System.Console.WriteLine("text=[" + text + "]");
            string result = Regex.Replace(text, @"\w+",
               new MatchEvaluator(Program.CapText));
            System.Console.WriteLine("result=[" + result + "]");

            Console.ReadKey();
        }

        static string CapText(Match m)
        {
            string x = m.ToString();
            if (char.IsLower(x[0]))
            {
                return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
            }
            return x;
        }

 输出

 

转载于:https://www.cnblogs.com/jorgen/archive/2010/10/14/1851555.html

正则表达式是一种用于匹配文本的强大工具,C#中的Regex类可以帮助我们轻松地使用正则表达式。下面是C#Regex的使用详解。 #### 1. 创建Regex对象 我们可以使用Regex类的构造函数创建一个Regex对象。构造函数需要一个正则表达式字符串作为参数,例如: ``` Regex regex = new Regex(@"\d+"); ``` 上面的代码创建了一个Regex对象,用于匹配一个或多个数字。注意,在正则表达式字符串前面加上@符号可以避免字符转义问题。 #### 2. 匹配字符串 使用Regex对象的Match方法可以匹配字符串。Match方法需要一个要匹配的字符串作为参数,例如: ``` string input = "123abc456"; Match match = regex.Match(input); ``` 上面的代码使用Regex对象regex匹配了字符串input中的数字。Match方法返回一个Match对象,该对象包含匹配结果的详细信息,例如匹配的值、起始位置等。 #### 3. 获取匹配结果 Match对象提供了多个属性和方法用于获取匹配结果的详细信息。下面是常用的一些属性和方法: - Value:获取匹配的值。 - Index:获取匹配的起始位置。 - Length:获取匹配的长度。 - Success:获取匹配是否成功的布尔值。 - Groups:获取匹配的分组。 例如,可以使用下面的代码获取第一个匹配的数字: ``` if (match.Success) { string value = match.Value; int index = match.Index; int length = match.Length; Console.WriteLine("Value: {0}, Index: {1}, Length: {2}", value, index, length); } ``` #### 4. 匹配多个结果 如果要匹配多个结果,可以使用Regex对象的Matches方法。Matches方法需要一个要匹配的字符串作为参数,返回一个MatchCollection对象,该对象包含所有匹配结果的详细信息。例如: ``` string input = "123abc456def789"; MatchCollection matches = regex.Matches(input); foreach (Match match in matches) { string value = match.Value; int index = match.Index; int length = match.Length; Console.WriteLine("Value: {0}, Index: {1}, Length: {2}", value, index, length); } ``` 上面的代码使用Regex对象regex匹配了字符串input中的所有数字,并输出了每个数字的详细信息。 #### 5. 替换字符串 使用Regex对象的Replace方法可以替换字符串中的匹配结果。Replace方法需要三个参数:要替换的字符串、替换后的字符串和一个可选的最大替换次数。例如: ``` string input = "123abc456def789"; string output = regex.Replace(input, "X"); Console.WriteLine(output); ``` 上面的代码使用Regex对象regex将字符串input中的所有数字替换为X,并输出了替换后的字符串。 以上就是C#Regex的使用详解。正则表达式是一种非常强大的工具,可以用于各种文本处理任务。在使用正则表达式时,建议先编写正则表达式字符串,然后使用Regex类进行匹配和替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值