一般应用场景

  正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;验证文本以确保它匹配预定义的模式(如电子邮件地址);提取、编辑、替换或删除文本子字符串;将提取的字符串添加到集合以生成报告。 对于处理字符串或分析大文本块的许多应用程序而言,正则表达式是不可缺少的工具。,主要是用在以下几个方面。

  1. 查找
  2. 替换
  3. 分割

查找

  查找一般也有两个应用场景,一是在做表单输入验证,此时需用到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 = "[email protected]@[email protected]";
            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);
                }
            }
        }

返回结果是一个列表,如下图。

替换

  关于替换,通常是通过调用 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);
        }

程序输出结果如下图。

可以发现,符合规则的内容都被移除了。

分割

  分割暂时还没有用过,待后面再补充。。。

时间: 2024-10-10 13:55:04

一般应用场景的相关文章

《好好说话》:常见沟通场景的应对误区与应答思路、应答句式。4星。

全书针对谈话的常见场景,分析双方的本质问题和应答方的常见应对误区.应该的应答思路与句式.对沟通双方的思路的分析比较有功力. 感觉是从大专辩论赛的角度来组织全书的结构的.我更同意马东在序言中的说法,这本书更应该叫<好好思考>.不过如果从“好好思考”的角度来写书,全书的结构和重点要做一些变化. 书中把语言沟通的五种常见场景(沟通.说服.谈判.演讲.辩论)称作五个维度,还画了一个五边形,我认为这是全书最大的败笔,这里说“五种场景”比“五个维度”跟合适,用表格比用五边形更合适. 个人感觉:在大部分的场

淘宝网的质量属性的场景描述

质量属性 可用性 简单介绍 系统应能长期稳定地提供服务,近似7 X 24小时工作强度: 在负载过重或是系统崩溃的情况下,能保证用户请求不丢失: 当系统出现故障或崩溃时,恢复时间不超过两小时: 场景部分 可能的值 刺激源 业务快速发展 刺激 PHP模式易开发.难维护 制品 淘宝的网页 环境 更换技术 相应 改PHP为Java, 改MySql为oracle 相应度量 2004年开始稳定的供其使用 质量属性 可修改性 简单介绍 修改某个子系统或服务时,不影响其他子系统或服务: 场景部分 可能的值 刺激

小程序的使用场景及用途分析

今天看了小程序的介绍,仔细研究了一番,忽然有了这么一个想法,小程序是口碑传播的大杀器. 小程序依托于微信,先看下张小龙对于这两个的表述 我认为微信是一个工具,这是一个非常庞大的目标,我不认为工具是低层面的东西,事实上,人类从原始人进化到现在正是因为会使用工具.工具有好坏之分,要做一个非常好的工具难度是非常大的. 希望微信及微信相关的产品希望它展现给用户的是更有价值是他所需要的东西,用完即走体现在微信的方方面面,帮助用户提高它的效率,缩短他完成一个任务所需要的时间. 小程序是一个不需要下载安装就可

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现.k

《虚拟人》:准科幻,讨论人的记忆与思维能力能够复制到机器之后的种种场景。3星。

感觉实质内容更像科幻小说(形式上不像).一开始判断人类将可以把大脑中的记忆与思维能力复制到软件,后面大部分都基于这个假设来讨论由此带来的社会.法律.宗教方面的各种可能出现的场景.3星. 以下是书中一些内容的摘抄: 1:事实上,有人与我持相同看法.本书内容大部分来自2003—2011年间我赞助过的座谈会和研讨会,书中观点参考了当今诸多颇具创造性.技术性和科学性的研究先锋们的观点.#286 2:“有重要证据显示,人类不是唯一拥有能够产生意识神经基质的物种.非人类动物,包括所有哺乳动物和鸟类.许多其他

HTTPS 原理剖析与项目场景

最近手头有两个项目,XX导航和XX产业平台,都需要使用HTTPS协议,因此,这次对HTTPS协议做一次整理与分享. 为什么使用HTTPS HTTP 协议,本身是明文传输的,没有经过任何安全处理.那么这个时候就很容易在传输过程中被中间者窃听.篡改.冒充等风险.这里提到的中间者主要指一些网络节点,是用户数据在浏览器和服务器中间传输必须要经过的节点,比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等. HTTP 协议,中间者可以窃听隐私,使用户的敏感数据暴露无遗:篡改网页,例如往页面插的广告

Android 原生开发、H5、React-Native使用利弊和场景技术分享

http://m.blog.csdn.net/article/details?id=51778086 发表于2016/6/28 18:52:46  1176人阅读 最近工作中接触到React-Native框架,对其进行一些技术分析,结合之前了解的H5的一部分,加上自己做了很久的原生开发(十几个android app.sdk,包括2个ios), 总结下目前了解到的这三种移动端应用开发方式的特点和试用范围,作为个人知识的记录,也作作为公司内部互相学习的分享. 一.原生开发   原生开发是系统自带的a

架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)

(接上文<架构设计:系统间通信(31)--其他消息中间件及场景应用(下1)>) 5-3.解决方案二:改进半侵入式方案 5-3-1.解决方法一的问题所在 方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离.方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑. 但是我们能为方案一列举的问题却可以远远多于方案一的优点: 需要为不同开发语言分别提供客户端API包.上文中我们介绍的示例使用JAVA语言,于是 事件/日志采集

git常用命令常用场景

在使用git之前,一直用的是svn版本管理:与svn最大不同的是,git有两个仓库,一个是本地仓库,一个是服务器上共享的仓库:本地仓库是每个开发者自己独有的,即使commit提交也只是提交到本地仓库:这只是git流行起来的一个优势之一,另外linux作者开发的这套版本管理工具,很接地气,也是流行起来的一大亮点.扯了这么多没用的,言归正卷,那么在日常开发工作中,哪些git命令是我们常用到的呢?下面就说说几个常用命令的常用场景,至于这些命令详细使用就不在本文讨论之内. 1.git命令别名 使用过gi

安卓常用布局与使用场景

常用的有三种   LinearLayout 线性布局   RelativeLayout相对布局  FrameLayout帧布局 特点: LinearLayout 线性布局    -->  1,默认是水平布局"horizontal"   可以设置为"vertical"  垂直布局   2,很有条理,写出来的布局比较直观,适合简单的页面布局 缺点-->  横平竖直,不能随意设置 RelativeLayout相对布局   -->   1.默认位置为屏幕右