正则表达式-问号的四种用法
正则表达式-问号的四种用法
原文符号
因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?
有无量词
问号可以表示重复前面内容的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”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。
正则表达式-问号的四种用法相关推荐
- java正则表达式判断问号_正则表达式问号的四种用法详解
原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\? 有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. 非贪婪匹配 贪婪匹配 在满足匹配时 ...
- Python 正则表达式-问号的四种用法
(1).原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,? (2).有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. (3).(非)贪婪匹 ...
- Python正则表达式中问号的四种用法
1.原文符号 因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,? 2.有无量词 问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次. 3.(非)贪婪匹配 贪婪匹配 ...
- mysql中模糊查询的四种用法介绍
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user ...
- mysql 中模糊查询的四种用法介绍
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...
- mysql中模糊查询的四种用法
转载自 https://www.cnblogs.com/songfayuan/articles/7290158.html 下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可 ...
- mysql 模糊查询用法_mysql进阶(六)模糊查询的四种用法介绍
mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...
- Java提高篇 —— Java关键字之static的四种用法
一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一 ...
- php str_replice_详解PHP字符串替换str_replace()函数四种用法
下面通过本文给大家分享PHP字符串替换str_replace()函数4种用法,具体内容如下所示: mixed str_replace ( mixed $search , mixed $replace ...
最新文章
- python手机版安卓-当python遇到Android手机 那么,万物皆可盘
- 感知机算法的两种表示
- 华为交换机配置Telnet
- 【Python】字符串类型及操作求三位水仙花数
- requests源码分析
- cvc降噪和主动降噪_小米降噪项圈蓝牙耳机来了:Hybrid主动降噪技术
- EOS开发“ Hello world !”
- 如何成为一名卓越的数据科学家——第一剑之再谈问题定义
- php聊天机器人源码,简单聊天机器人源码
- vue引入高德地图获取经纬度地址
- 【NA】函数最佳逼近(三)切比雪夫多项式
- java聊天室课程报告_java课程设计报告(java聊天室).doc
- Origin8画图:将多个worksheet表画在同一张图
- Express + JWT用户认证最轻实践
- linux C语言多线程 轻进程 LWP:Light Weight Process
- 最简单的解决Chrome浏览器主页被hao123、360和2345篡改的方法是什么
- win10专业版2020下载链接
- 数据机房特殊规范标签生成及打印方案分享
- [数学 悖论/理论]-(1) 直角三角形两边之和等于第三边!
- 记录用matlab APP中matlab coder的简单步骤
热门文章
- centos7下使用yum安装ifconfig
- 那些可能有用的降噪耳机
- 华为深度linux系统体验,华为 matebook 13 deepin系统使用感受
- 微信公众号实现机器人回复
- win10怎样锁定计算机,win10
- 简单的文本编辑器 - wxWindows编程事例
- 北京理工大学计算机技术参考书目,2020北京理工大学计算机技术考研专业课大纲、参考书、真题答题方法...
- Linux(RedHat9.0)下Alsa声卡驱动的安装
- 软件测试知识集(杂)-@2
- NVIDIA显卡高性能模式设置