热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#Regex(1)

学习工具:下载一个例子stringvalue123;RegexrenewRegex(^[0-9]{1,2}$);if(!re.IsMatch(value)){}上

学习工具: 下载

一个例子


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了。$和^类似,如下图

2010101414343152.png

另外一种意思,当^在[^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):在匹配选项下匹配数据

     例

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

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

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

view sourceprint?

1stringtext = "One car red car blue car";
2stringpat = @"(\w+)\s+(car)";
3
4Regex r = newRegex(pat, RegexOptions.IgnoreCase);
5 Match m = r.Match(text);
6  foreach(;m.Success;m.NextMatch())
7Console.WriteLine("{0}",m.Value.ToString ());
8Console.ReadKey();

view sourceprint?
1 

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

  

view sourceprint?
01static void Main(string[] args)
02       {
03 
04           string text = "four score and seven years ago";
05           System.Console.WriteLine("text=[" + text + "]");
06           string result = Regex.Replace(text, @"\w+",
07              new MatchEvaluator(Program.CapText));
08           System.Console.WriteLine("result=[" + result + "]");
09 
10           Console.ReadKey();
11       }
12 
13       static string CapText(Match m)
14       {
15           string x = m.ToString();
16           if (char.IsLower(x[0]))
17           {
18               return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
19           }
20           return x;
21       }

 输出

 2010101417060349.png



转:https://www.cnblogs.com/kingdom_0/articles/2029333.html



推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
author-avatar
happy可乐可爱多_376_874
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有