量词

  正则表达式的量词用于表明前面的子表达式需要匹配的次数。阅读本章前,建议先下载我于CSDN上传的示例代码,下载无需分数,下载链接

1.量词的一般形式

  "{n}","{m,n}","{m,}",这三个是量词的一般形式。这里n≥0,m≥0,且当同时存在m,n时n≥m。而且这些量词不能单独使用,即这些量词的前面必须有一些其他的实际内容。例如,"\d{3}"连续匹配3个数字。"\d{3,}"匹配至少3个数字,没有上限。"\d{3,5}"匹配至少3个,至多5个数字。

Regex.IsMatch("",@"\d{3}");//true
Regex.IsMatch("",@"\d{3,}");//true
Regex.IsMatch("",@"\d{3,5}");//true

  为什么这里会全部匹配呢,因为这里并没有限定输入字符串的开始和结束的位置(在断言篇你就会知道原因)。尝试更改成以下代码。

Regex.IsMatch("",@"^\d{3}$");//false
Regex.IsMatch("",@"^\d{3,}$");//true
Regex.IsMatch("",@"^\d{3,5}$");//false

2.常用量词

  "*","?","+"是三个量词的简记法。"*"等价于"{0,}",即可以出现也可以不出现。"+"等价于"{1,}",即至少出现一次。"?"等价于"{0,1}",即出现一次或不出现。

Regex.IsMatch("",@"^\d*$");//true
Regex.IsMatch("",@"^\d?$");//false
Regex.IsMatch("",@"^\d+$");//true

3.量词转义

  假设我们仅需要匹配'*','?','+'这些字符。或者我们要匹配"{2,3}"这样的字符串。则需要对量词进行转义。正则表达式"\*","\?","\+","\{2,3}"能匹配以上的情况。

Regex.IsMatch("*",@"\*");//true
Regex.IsMatch("?",@"\?");//true
Regex.IsMatch("+",@"\+");//true
Regex.IsMatch("{2,3}",@"\{2,3}");//true
Regex.IsMatch("{4,3}",@"\{2,3}");//false

  量词暂时介绍这么多,谢谢!

.NET正则表达式基础入门(二)的更多相关文章

  1. .NET正则表达式基础入门

    这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...

  2. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  3. C#基础入门 二

    C#基础入门 二 循环语句 与C语言中用法相同. continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用). 数组 一维数组定义:int[] intArra ...

  4. .NET正则表达式基础入门(四)

    断言 判断某个位置左侧或者右侧是否符合匹配.常见断言有三种,单词边界.行起始/结束位置.环视.阅读本章前,建议先下载我于CSDN上传的示例代码,下载无需分数,下载链接. 1.单词边界 正则表达式&qu ...

  5. .NET正则表达式基础入门(一)

    字符组 正则表达式的字符组十分简单,就是列出你所想要匹配的字符.阅读本章前,建议先下载我于CSDN上传的示例代码,下载无需分数,下载链接. 1.普通字符组 普通字符组,列出所有你需要匹配的字符. 例如 ...

  6. .NET正则表达式基础入门(三)

    括号 正则表达式中的括号能将多个字符或者表达式当做一组,即将他们看成一个整体.这样量词就可以修饰这一组表达式.阅读本章前,建议先下载我于CSDN上传的示例代码,下载无需分数,下载链接. 1.分组 假设 ...

  7. PHP正则表达式基础入门

    思维导图 介绍 正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如JavaScript.Java..Net.PHP 等,我今天就把我对正则表达式的理解跟大家唠唠,不当之 ...

  8. JAVA之Mybatis基础入门二 -- 新增、更新、删除

    上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作: 一. 插入一条数据 1.首先编写USER.XML(表的xml)使用insert元素,元素写在map ...

  9. C#学习笔记---基础入门(二)

    枚举 枚举是被命名的整型常数的集合:枚举类型的变量只有赋值后才能使用:不同枚举中的枚举值可以重名:可以自定义枚举值. enum Playstates {            跑, 跳,下滑,左转,右 ...

随机推荐

  1. RemoteIE 开发者可跨平台使用IE测试网页

    RemoteIE,这是一个基于微软Azure的服务,它允许开发者在最新版本的IE(Windows 10技术预览版)中测试他们的网页,而不需要安装或在虚拟机中设置对应的系统.要想使用这项服务,开发者需要 ...

  2. 移动Web触控事件总结

    移动web风风火火几多年,让我这个在Pc端漂流的前端er不免心生仰慕,的确入行几多年,也该是时候进军移动web了.移动web中踩到的第一个坑就是事件问题,所以在吸取众大神的经验后,特作总结以示后来者. ...

  3. 剑指Offer面试题:5.重建二叉树

    一.题目:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序 ...

  4. Christmas Trees, Promises和Event Emitters

    今天有同事问我下面这段代码是什么意思: var MyClass = function() { events.EventEmitter.call(this); // 这行是什么意思? }; util.i ...

  5. Objective-C 装饰模式--简单介绍和使用

    装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 比如游戏机有一个GamePad类, 现在要增加一个作弊功能(例如100 ...

  6. Spring学习记录(二)---容器和bean属性配置

    下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...

  7. Hibernate框架的配置

    概念 持久化框架 把对象保存到数据库中,对数据的CURD操作 配置Hibernate 1.在项目中引入Hibernate的Jar包 在 WebContent/WEB-INF/lib 目录下 导入jar ...

  8. KNN算法

    1.算法讲解 KNN算法是一个最基本.最简单的有监督算法,基本思路就是给定一个样本,先通过距离计算,得到这个样本最近的topK个样本,然后根据这topK个样本的标签,投票决定给定样本的标签: 训练过程 ...

  9. node-mysql 在4.2.0的时候遇到的错误

    实际上这个问题折腾了几天.前一阵因为升级到了最新的4.2.0,发现mysql的应用就出错了,错误消息也比较奇怪 Handshake Inactivity Timeout - PROTOCOL_SEQU ...

  10. Oracle巡检脚本:ORAWatcher.sh

    Oracle巡检脚本:ORAWatcher.sh #!/usr/bin/ksh echo "" echo "ORAWatcher Version:1.0.1" ...