贪婪匹配

贪婪匹配 (Greedy Matching):

  • 贪婪匹配会尽可能多地匹配字符。
  • 当正则表达式引擎遇到量词时,它会尝试匹配尽可能多的字符,直到无法继续匹配为止。
  • 这是正则表达式的默认行为

贪婪匹配:

  • 正则表达式:a*b*
  • 匹配结果:aabbaabb (整个字符串)
  • 解释:a* 匹配尽可能多的 ab* 匹配尽可能多的 b

非贪婪匹配

非贪婪匹配 (Non-Greedy/Lazy/Reluctant Matching):

  • 非贪婪匹配会尽可能少地匹配字符。
  • 当正则表达式引擎遇到量词时,它会尝试匹配尽可能少的字符,只要满足量词的最小要求即可。
  • 通过在量词后面添加 ? 来启用非贪婪匹配模式。

非贪婪匹配:

  • 正则表达式:a*?b*?
  • 匹配结果:`` (空字符串)
  • 解释:a*? 匹配尽可能少的 a (0 个),b*? 匹配尽可能少的 b (0 个)。