欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

程序员文章站 2022-03-06 08:56:08
...
正则表达式并不是Python独有的,而是一套独立的语法,很多编程语言都支持。不同语言中使用的正则表达式语法并不完全一样,但大体都是类似的。本文重点介绍一下贪心模式和非贪心模式的用法和区别。在默认情况下,正则表达式是按照贪心模式去匹配的,也就是去匹配能够匹配到的尽可能多的内容。例如:

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

在上面的代码中,正则表达式中第一个\b表示匹配单词头,后面还有个字母b,表示匹配以字母b开头的单词,后面一个圆点.表示匹配任意字符(包括空格),然后加号+表示前面的任意字符出现一次或多次,最后一个\b表示匹配单词尾。那么问题来了,什么算是单词尾呢?空白字符和标点符号都算单词尾,但是正则表达式默认使用贪心模式,也就是匹配尽可能多的内容,所以上面的代码匹配到的文本中最后一个单词尾。如图:

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

那如何才能只匹配以字母b开始的单词而不是像上面这样子呢?可以使用非贪心模式。非贪心模式是使用问号“?”完成的,在正则表达式中,如果问号前面是普通字符或子模式,表示问号前面的字符或子模式可以出现也可以不出现。但是如果问号紧跟在+、*和{m,n}这样的内容后面,则表示非贪心模式,也就是匹配尽可能少的内容。以上面的问题为例,改为非贪心模式,例如:

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

下面的代码进一步演示了贪心模式和非贪心模式的区别:

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

当然,回到本文最初的问题,如果只是为了匹配以字母b开始的单词,是不用这么麻烦,直接使用\w就好了,因为\w只能匹配字母、数字或下划线,而不能匹配空格。例如:

Python之正则表达式中的贪心模式和非贪心模式的用法和区别

相关推荐:

正则表达式re中的贪心算法和非贪心算法 在python中的应用

以上就是Python之正则表达式中的贪心模式和非贪心模式的用法和区别的详细内容,更多请关注其它相关文章!