gpt4 book ai didi

regex - .* 是什么?正则表达式实际上是什么意思?

转载 作者:行者123 更新时间:2023-12-02 05:24:11 24 4
gpt4 key购买 nike

我已经使用 perl 十年了。但最近我对使用 .* 感到困惑?正则表达式。

它似乎与最小字符数不匹配。有时它会给出不同的结果。

例如对于这个字符串:aaaaaaaaaaaaaaaaaaaaaaammmmmmmmmmmbaaaaaaaaaaaaaaaaaaaaaab 和模式: a.*?b 它匹配两个组中的完整输入字符串。根据定义,它应该匹配最后一个“ab”。

最佳答案

示例缩短为:

'aaab' =~ /a.*?b/

怎么了:
  • a 匹配 a
  • .*? 匹配尽可能少的字符数 (0),匹配空字符串。
  • b 不匹配。 ⇒ 回溯
  • .*? 匹配尽可能少的字符数 (1),匹配 a
  • b 不匹配。 ⇒ 回溯
  • .*? 匹配尽可能少的字符数 (2),匹配 aa
  • b 匹配 b
  • 模式匹配成功。

  • 我尽量避免使用非贪婪修饰符。
    'aaab' =~ /a[^a]*b/

    如果 a 确实是更复杂的东西,那么可以使用负前瞻。
    'aaab' =~ /a(?:(?!a).)*b/

    关于regex - .* 是什么?正则表达式实际上是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401778/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com