各地市:
漯河数据分析如何帮助企业进行数据清洗? 许昌网页开发的就业前景和薪资水平如何 濮阳定制化网站去哪儿找? 濮阳域名注册去哪儿找? 鹤壁网站建设费用多少? 漯河定制化网站如何保证网站安全? 许昌网站建设中,如何策划吸引人的文章内容? 濮阳网站维护如何进行学习? 周口电商网站分为哪些类型? 商丘网站建设怎么处理服务器漏洞安全? 开封免费搭建网站如何策划? 漯河数据分析如何策划? 开封logo设计的流程和注意事项有哪些? 周口logo设计怎么设计最好? 濮阳网站建设主页设计有什么要求? 南阳网站SEO中链轮模型如何建立? 济源SEO技术中更换IP后怎么做? 濮阳网站建设Linux服务器怎么配置SSH服务器? 开封域名注册的费用是多少? 济源网站优化SEO中快速排名有哪些应用场景? 安阳网站建设公司哪家专业可靠? 开封域名注册需要多少钱? 开封网站建设怎么定期Linux服务器备份数据? 平顶山响应式设计最新技术发展趋势分析? 洛阳SEO技术如何降低跳出率? 周口网站维护分为哪些类型? 三门峡网站建设Linux服务器怎么限制shell访问权限? 开封免费搭建网站的优势是什么? 濮阳电商网站需要注意什么事项? 济源网络安全有什么技巧? 周口网站建设Linux服务器通过哪些方式隐藏服务器? 洛阳免费搭建网站如何进行学习? 漯河定制化网站需要确认哪些功能? 商丘网站空间购买需要多长时间? 南阳域名注册需要多长时间? 洛阳网站建设导航设计有什么要求? 驻马店网页开发分为哪些类型? 信阳网站维护需要多少钱? 漯河网站优化中搜索引擎怎么操作? 焦作网络安全需要考虑什么因素? 许昌网站建设日常怎么检查服务器网络安全? 新乡seo中网站空间如何进行优化? 新乡免费搭建网站去哪儿找? 新乡网站设计去哪儿找? Linux服务器通过哪些方式发现未授权访问? 南阳网站建设Linux服务器怎么过滤流量? 南阳网站建设Linux服务器怎么记录未授权访问? 三门峡网站建设Linux服务器通过哪些方式拒绝服务攻击? 濮阳网站建设Linux服务器通过哪些方式限制流量? 安阳网站建设怎么处理服务器系统安全? 鹤壁网站建设404页面怎么开发?
您的位置: 主页 > 常见问题 > C#正则表达式快速入门

C#正则表达式快速入门

发布时间:2023-08-05 10:41:14 | 发布者:往流科技

[介绍]


作者将自己在学习正则表达式中的心得和笔记作了个总结性文章,希望对初学C#正则表达式的读者有帮助。

[内容]

  1. 什么是正则表达式

  2. 涉及的基本的类

  3. 正则表达式基础知识

  4. 构建表达式基本方法

  5. 编写一个检验程序

  6. 参考资料



[正文]


    对于初学者看到类似“w+@w+.w{1,3}”这样复杂没有规律的字符,就会莫名产生一种恐惧感。其实正则表达式和字符串(String)的使用同样非常简单。下面让我们逐步地走进正则表达式的世界!


什么是正则表达式


    正则表达式是用来检验和操作字符串的强大工具。简单的理解正则表达式可以认为是一种特殊的验证字符串。正则表达式常见运用是验证用户输入信息格式,比如上面的那组“w{1,}@w{1,}.w{1”,实际上就是验证邮件地址是否合法的;当然正则表达式不仅仅是用于验证,可以说只要运用字符串的地方都可以使用正则表达式;


涉及的基本的类


    正则表达式在英文中写作(Regular Expression),根据正则表达式的使用范围和单词意思,.NET将其命名空间设置为System.Text.RegularExpressions;


    在该命名空间内包括了8个基本的类:Capture、CaptureCollection、Group、GroupCollection、Match、MatchCollection、Regex和RegexCompilationInfo如图1所示;



图1 MSDN Library中正则表达式命名空间



[注意]

    本文属于初学正则表达式的入门文章,对于高级的分组(Group)及其涉及语法等在这里不做介绍;



正则表达式基础知识


  • 基本语法


    在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策);


    字符匹配语法:













字符语法语法解释语法例子
d匹配数字(0~9)‘d’匹配8,不匹配12;
D匹配非数字‘D’匹配c,不匹配3;
w匹配任意单字符‘ww’ 匹配A3,不匹配@3;
W匹配非单字符‘W’匹配@,不匹配c;
s匹配空白字符‘dsd’匹配3 d,不匹配abc;
S匹配非空字符‘SSS’匹配A#4,不匹配3 d;
.匹配任意字符‘....’匹配A$ 5,不匹配换行;
[…]匹配括号中任意字符[b-d]匹配b、c、d, 不匹配e;
[^…]匹配非括号字符[^b-z]匹配a,不匹配b-z的字符;


    重复匹配语法:










重复语法语法解释语法例子
{n}匹配n次字符d{3}匹配ddd,不匹配dd或dddd
{n,}匹配n次和n次以上w{2}匹配ww和www以上,不匹配w
{n,m}匹配n次上m次下s{1,3}匹配s,ss,sss,不匹配ssss
?匹配0或1次5?匹配5或0,不匹配非5和0
+匹配一次或多次S+匹配一个以上S,不匹配非一个以上S
*匹配0次以上W*匹配0以上W,不匹配非N*W


    字符定位语法:











重复语法语法解释语法例子
^定位后面模式开始位置
$前面模式位于字符串末端
A前面模式开始位置
z前面模式结束位置
Z前面模式结束位置(换行前)
匹配一个单词边界
B匹配一个非单词边界


    转义匹配语法:





  • 构造正则表达的方法


    构造正则表达式需要涉及Regex类,在Regex类中包括:IsMatch()、Replace()、Split()和Match的类;


(1) IsMatch()方法;


    IsMatch()方法实际上是一个返回Bool值得方法,如果测试字符满足正则表达式返回True否则返回False;






(2) Replace()方法;


    Replace()方法实际上是一种替换的方法,替换匹配正则表达式匹配模式;







图3 “例2”Replace方法是用例


(3) Split()方法;


    Split()方法实际上是拆分的方法,根据匹配正则表达式进行拆分储存在字符串数组中;





构建表达式基本方法


    构造Regex对象的构造函数包括两个重载,一个是不含参数的构造、另外一个是含有参数的构造函数;



  • 基本形式Regex(string pattern);

  • 重载形式Regex(string pattern,RegexOptions);


    补充:RegexOptions属于枚举类型,包括IgnoreCase(忽略大小写)、ReghtToLeft(从右向左)、None(默认)、CultureInvariant(忽略区域)、Multline(多行模式)和SingleLine(单行模式);






编写一个检验程序


    为了方便自己在学习正则表达式和快速检验自己编写表达式语句是否正确,下面提供一个IsMatch()方法正则表达式验证器编写;



  1. 打开VS.NET,选择新建项目中的Visual C#项目的Windows应用程序,取名为“Regex_Tools”;

  2. 然后编写如图6所示的界面




    图6 正则表达式IsMatch方法验证器



  3. 然后在该窗体声明中增加正则表达式命名空间声明using System.Text.RegularExpressions;

  4. 编写下列代码


    • 编写一段私有的判断参数的方法,如图7所示;



      图7私有验证参数判断方法



    • 编写判断按钮的方法


    • 编写清空按钮的方法,所有的文本框等于空;

  5. 编译该程序,一个简单的正则表达式验证器就成功生成了