全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

正则表达式中贪婪模式和非贪婪模式的区别在哪里

发布时间:2023-03-21 10:36:00
发布人:syq

  正则表达式中的贪婪模式和非贪婪模式是指量词匹配时的两种不同匹配方式,它们的区别在于匹配时的优先级和匹配的范围。

贪婪模式和非贪婪模式的区别

  在贪婪模式下,匹配器尽可能多地匹配符合要求的字符,直到不能再匹配为止。例如,正则表达式 a.*b 在匹配字符串 "abbcab" 时,会匹配整个字符串 "abbcab",而不是期望的 "ab"。

  在非贪婪模式下,匹配器尽可能少地匹配符合要求的字符,直到满足要求为止。例如,正则表达式 a.*?b 在匹配字符串 "abbcab" 时,只会匹配到第一个 "ab",而不是整个字符串。

  在正则表达式中,使用 ? 后缀可以将量词从贪婪模式切换为非贪婪模式。例如,*? 表示非贪婪的零次或多次匹配,而 +? 表示非贪婪的一次或多次匹配。

  总的来说,贪婪模式和非贪婪模式的区别在于匹配时的优先级和匹配的范围,选择合适的模式取决于具体的匹配需求。如果需要尽可能多地匹配字符,就应该使用贪婪模式;如果需要尽可能少地匹配字符,就应该使用非贪婪模式。

  假设有一个字符串 "abbbc",要用正则表达式匹配其中的子串 "ab+c",其中 + 表示至少一个 b。

  使用贪婪模式时,可以使用正则表达式 "ab+c",这个表达式会匹配整个字符串 "abbbc"。

1

  使用非贪婪模式时,可以在量词后面添加一个问号,使用正则表达式 "ab+?c",这个表达式会匹配到第一个 "abbc" 子串。

2

  可以看到,贪婪模式和非贪婪模式的区别在于匹配的范围,前者匹配整个字符串,后者只匹配到第一个符合要求的子串。

相关文章

python写入json文件?

python写入json文件?

2023-11-02
vscode设置tab为4个空格?

vscode设置tab为4个空格?

2023-11-02
更新pycharm?

更新pycharm?

2023-11-02
anaconda每次打开都要安装?

anaconda每次打开都要安装?

2023-11-02

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取