正则表达式-问号的四种用法

原文符号

因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?

有无量词

问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次。

非贪婪匹配

贪婪匹配

在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

string pattern1 = @"a.*c";   // greedy match 
Regex regex = new Regex(pattern1);
regex.Match("abcabc"); // return "abcabc"

非贪婪匹配

在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配

string pattern1 = @"a.*?c";   // non-greedy match
Regex regex = new Regex(pattern1);
regex.Match("abcabc"); // return "abc"

几个常用的非贪婪匹配Pattern

  • *? 重复任意次,但尽可能少重复
  • +? 重复1次或更多次,但尽可能少重复
  • ?? 重复0次或1次,但尽可能少重复
  • {n,m}? 重复n到m次,但尽可能少重复
  • {n,}? 重复n次以上,但尽可能少重复

不捕捉模式

如何关闭圆括号的捕获能力?而只是用它来做分组,方法是在左括号的后边加上:?,这里第一个圆括弧只是用来分组,而不会占用捕获变量,所以$1的内容只能是steak或者burger,而永远不可能是bronto。
while(<>){
    if(/(?:bronto)(steak|burger)/){
        print "Fred wants a $1\n" ;
    }
}

正则表达式中?的用法相关推荐

  1. 正则表达式中^的用法

    用法一:   限定开头 文档上给出了解释是匹配输入的开始,如果多行标示被设置成了true,同时会匹配后面紧跟的字符.    比如 /^A/会匹配"An e"中的A,但是不会匹配&q ...

  2. 正则表达式中问号?的正确用法

    正则表达式中"?"的用法大概有以下几种 用作重复次数限制功能,用在子表达式后,表示子表达式内容可以出现0次或1次 用于表示非贪婪匹配,必须跟在表示重复的符号后,即必须跟在 * + ...

  3. 正则表达式中grep,sed的用法(包括基本的正则表达式和扩展的正则表达式)

    一 正则表达式   Basic REGEXP:基本正则表达式 Extended REGEXP:扩展正则表达式 (正则表达式是使得计算机变成智能化的重要途径) 1.1 基本正则表达式 . : 表示匹配任 ...

  4. oracle中取反_oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 更新时间:2013年06月13日 17:42:05   作者: 本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介 ...

  5. mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHo ...

  6. mysql替换首字母_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    这篇文章主要介绍了MySQL中使用replace.regexp进行正则表达式替换的用法,结合具体实例形式分析了replace.regexp正则替换的使用技巧与相关注意事项,需要的朋友可以参考下 本文实 ...

  7. 正则表达式中反斜杠的另一用法

    今天在写一个日期格式的正则表达式的时候,在网上发现一个大侠的写法: var result = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); ...

  8. python正则表达式中括号的用法_Python的正则表达式中的圆括号到底如何使用?

    这个问题并不太严重,严格来说我这样提问有些草率,不过也有人关注那我就把自己百度探究的结果写一写好了,有错误则请指出来. 首先是文档说明: >>> import re >> ...

  9. 详解Python正则表达式中group与groups的用法

    在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息. group方法是re.MatchObject类中的一个函数,用于返回匹配对象的整个匹配结果或特 ...

  10. js mysql替换_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110 ...

最新文章

  1. SilverLight 双向绑定
  2. Python下opencv使用笔记系列
  3. python删除指定文件夹下文件和文件夹的方法
  4. c语言程序设计第四版十二五,C语言程序设计/普通高等教育十二五规划教材
  5. 小米小爱蓝牙音箱_小米小爱蓝牙音箱——值否?
  6. 你还可以续命几次?回顾DockPanel Suite项目的发展史
  7. 29、jdbc操作数据库(6)
  8. 下列哪一项不是计算机网络的典型应用,09级计算机信息网络试卷A
  9. IE浏览器整页截屏程序
  10. java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy 错误解决办法
  11. arXiv pdf下载很慢的解决方法
  12. html页面css代码写在哪里,HTML、CSS代码书写规范
  13. 字节跳动BVC2解码器率先支持移动平台H.266标准8K解码
  14. 多点触摸与单点触摸接口主要区别【转】
  15. vue-amap - 基于Vue2.0和高德地图的地图组件
  16. fast neural style transfer图像风格迁移基于tensorflow实现
  17. 对象创建从农业社会到共产主义的发展
  18. POJ 2752 Seek the Name, Seek the Fame (KMP)
  19. 票据纸张尺寸对照表_粉丝要求,这期整理一版平面设计必备各种尺寸知识(收藏版))...
  20. linux如何查询文件及文件夹大小

热门文章

  1. XCTF-MISC-新手区-gif
  2. DVWA--Brute Force(暴力破解)--四个等级
  3. link 和 @import 的区别
  4. android 启动器开发,Android启动器(Launcher)开发详解
  5. 东莞理工c语言作业,东莞理工学院C语言网上作业..doc
  6. python一键取消注释_Python文件去除注释的方法
  7. aerials标准测试图像_Python 图像读写谁最快?不信就比一比
  8. css怎么把横向菜单变纵向_CSS 布局模式 + 居中布局
  9. MongoDB日志文件过大
  10. 存储安全与数据恢复基础手册-服务器篇