MST

星途 面试题库

面试题:Python正则表达式回溯控制之中等难度

在Python的正则表达式中,假设你有一个字符串 'aabbbccd',要匹配尽可能多的 'b',但又要保证后面能匹配到 'c',请写出对应的正则表达式,并解释其中回溯控制是如何起作用的。
29.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 正则表达式aab+?c
  2. 回溯控制解释
    • 在这个正则表达式中,b+? 是关键部分。b+ 表示匹配一个或多个 b,而 ? 在这里使 b+ 变成非贪婪模式(惰性模式)。
    • 当正则表达式引擎从左到右匹配字符串 aabbbccd 时,遇到 aab 后,对于 b+?,它会先尝试匹配尽可能少的 b,即先匹配一个 b,然后尝试匹配后面的 c。由于当前匹配到 b 后紧跟的字符是 b 而不是 c,所以正则表达式引擎会回溯,继续匹配一个 b,再次尝试匹配 c,直到成功匹配到 c 或者没有更多的 b 可供匹配。这样就保证了既匹配尽可能多的 b,又能匹配到后面的 c。如果使用贪婪模式 b+,它会一直匹配所有的 b,导致后面无法匹配到 c