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

原文符号

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

有无量词

问号可以表示重复前面内容的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" ;
    }
}

(pattern) 
   匹配 pattern 并捕获该匹配的子表达式。可以使用 $0...$9 属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用“\(”或者“\)”。

(?:pattern) 
    匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“或”字符 (|) 组合模式部件的情况很有用。例如,与“industry|industries”相比,“industr(?:y| ies)”是一个更加经济的表达式。
 
(?=pattern) 
    执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,“Windows (?=95| 98| NT| 2000)”与“Windows 2000”中的“Windows”匹配,但不与“Windows 3.1”中的“Windows”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

(?!pattern) 
    执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,“Windows (?!95| 98| NT| 2000)”与“Windows 3.1”中的“Windows”匹配,但不与“Windows 2000”中的“Windows”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

正则表达式-问号的四种用法相关推荐

  1. java正则表达式判断问号_正则表达式问号的四种用法详解

    原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\? 有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. 非贪婪匹配 贪婪匹配 在满足匹配时 ...

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

    (1).原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,? (2).有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. (3).(非)贪婪匹 ...

  3. Python正则表达式中问号的四种用法

    1.原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,? 2.有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. 3.(非)贪婪匹配 贪婪匹配 ...

  4. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

  5. mysql 中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  6. mysql中模糊查询的四种用法

    转载自  https://www.cnblogs.com/songfayuan/articles/7290158.html 下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可 ...

  7. mysql 模糊查询用法_mysql进阶(六)模糊查询的四种用法介绍

    mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...

  8. Java提高篇 —— Java关键字之static的四种用法

    一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一 ...

  9. php str_replice_详解PHP字符串替换str_replace()函数四种用法

    下面通过本文给大家分享PHP字符串替换str_replace()函数4种用法,具体内容如下所示: mixed str_replace ( mixed $search , mixed $replace ...

最新文章

  1. python手机版安卓-当python遇到Android手机 那么,万物皆可盘
  2. 感知机算法的两种表示
  3. 华为交换机配置Telnet
  4. 【Python】字符串类型及操作求三位水仙花数
  5. requests源码分析
  6. cvc降噪和主动降噪_小米降噪项圈蓝牙耳机来了:Hybrid主动降噪技术
  7. EOS开发“ Hello world !”
  8. 如何成为一名卓越的数据科学家——第一剑之再谈问题定义
  9. php聊天机器人源码,简单聊天机器人源码
  10. vue引入高德地图获取经纬度地址
  11. 【NA】函数最佳逼近(三)切比雪夫多项式
  12. java聊天室课程报告_java课程设计报告(java聊天室).doc
  13. Origin8画图:将多个worksheet表画在同一张图
  14. Express + JWT用户认证最轻实践
  15. linux C语言多线程 轻进程 LWP:Light Weight Process
  16. 最简单的解决Chrome浏览器主页被hao123、360和2345篡改的方法是什么
  17. win10专业版2020下载链接
  18. 数据机房特殊规范标签生成及打印方案分享
  19. [数学 悖论/理论]-(1) 直角三角形两边之和等于第三边!
  20. 记录用matlab APP中matlab coder的简单步骤

热门文章

  1. centos7下使用yum安装ifconfig
  2. 那些可能有用的降噪耳机
  3. 华为深度linux系统体验,华为 matebook 13 deepin系统使用感受
  4. 微信公众号实现机器人回复
  5. win10怎样锁定计算机,win10
  6. 简单的文本编辑器 - wxWindows编程事例
  7. 北京理工大学计算机技术参考书目,2020北京理工大学计算机技术考研专业课大纲、参考书、真题答题方法...
  8. Linux(RedHat9.0)下Alsa声卡驱动的安装
  9. 软件测试知识集(杂)-@2
  10. NVIDIA显卡高性能模式设置