您的位置:

正则表达式非贪婪模式详解

正则表达式(non-greedy mode)指的是正则表达式中的量词尽可能地匹配更少的字符。本文将从多个方面详细阐述正则表达式非贪婪模式,并为你提供相关的代码示例。

一、正则非贪婪模式怎样表示

要想开启正则表达式非贪婪模式,需要在量词后面添加“?”。在Java、Python等编程语言中,可以在量词后面添加“?”,例如:

import re
# 将贪婪模式转为非贪婪模式
str = 'aa
   cc
    
ee' str_list = re.findall(r"<.*?>", str) print(str_list) # ['', '
']
在上述代码中,r"<.*?>"中的问号就代表了非贪婪模式。这个正则表达式的匹配结果为[' ', '
'],只匹配一个尖括号内的内容。

二、正则贪婪匹配

在正则表达式中,默认情况下,量词是贪婪的。这意味着量词“*”、“+”、“?”、“{n,}”、“{n,m}”尽可能匹配多的字符。例如,正则表达式 将匹配整个字符串“ 百度”,因为“.*”被解释为所有字符的重复的0次或多次。因此,非贪婪模式将尽量少地匹配字符。

三、正则表达式里非贪婪模式

正则表达式里的非贪婪模式可以解决一些量词匹配过多字符的问题。例如,在下面的字符串“ TitleMain Text