正则表达式问号的四种用法详解
程序员文章站
2022-11-05 18:49:10
原文符号
因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?
有无量词
问号可以表示重复前面内容的0次或一次,也就是要么...
原文符号
因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?
有无量词
问号可以表示重复前面内容的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" ; } }
上一篇: 笔记本电脑时间不准的处理思路
推荐阅读
-
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
-
详解vue使用插槽分发内容slot的用法
-
详解安装mitmproxy以及遇到的坑和简单用法
-
详解Android TableLayout中stretchColumns、shrinkColumns的用法
-
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
-
中药养生 四种延年益寿中药的用量用法
-
Android中TelephonyManager类的用法案例详解
-
numpy库与pandas库axis=0,axis= 1轴的用法详解
-
numpy下的flatten()函数用法详解
-
thinkPHP5框架中widget的功能与用法详解