python正则表达式贪婪与⾮贪婪模式
之前做程序的时候看到过正则表达式的贪婪与⾮贪婪模式,今天⽤的时候就想不起来了,现在这⾥总结⼀下,以备⾃⼰以后⽤到注意。
1.什么是正则表达式的贪婪与⾮贪婪匹配
如:String str="abcaxc";python正则表达式不包含
Patter p="ab.*c";
贪婪匹配:正则表达式⼀般趋向于最⼤长度匹配,也就是所谓的贪婪匹配。如上⾯使⽤模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。
⾮贪婪匹配:就是匹配到结果就好,最少的匹配字符。如上⾯使⽤模式p匹配字符串str,结果就是匹配到:abc(ab.*?c)。
2、编程中如何区分两种模式
默认是贪婪模式;在量词后⾯直接加上⼀个问号?就是⾮贪婪模式。
下⾯的都是量词:
{m,n}:m到n个
*:任意多个
+:⼀个到多个
?: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次以上,但尽可能少重复
正则表达式规则查看如下教程:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论