究竟是什么。*? 用正则表达式吗? “。*?([一个

这个问题在这里已经有了答案:

  • 贪婪与不愿意与拥有量词7答案

  • 这个? 如果我可以这样称呼它并使得.*匹配尽可能少的匹配(称为“懒惰”),直到模式中的下一场比赛为止。

    fall/2005fall/2005 ,第一个.*? 将匹配在([am/]*)的第一个匹配,这就在f之前。 因此, .*? 匹配0字符,以便([am/]*)将匹配fall/以来([am/]*)无法比拟的了,该模式的下一部分.*匹配什么字符串中离开,这意味着2005

    与此相反.*([am/]*).* ,你将有.*匹配尽可能第一(指整个字符串),并尝试回去,使其他条件相匹配。 除了其他量词可以匹配0个字符的问题外,这样.*就可以匹配整个字符串(称为“贪婪”)。


    也许不同的例子会有所帮助。

    .*ab
    

    在:

    aaababaaabab
    

    在这里, .*会匹配尽可能多的字符,然后尝试匹配ab 。 因此, .*将匹配aaababaaab ,其余的匹配ab

    .*?ab
    

    在:

    aaababaaabab
    

    在这里, .*? 将尽可能少地匹配,直到它可以匹配那个正则表达式中的abab的第一次出现在这里:

    aaababaaabab
      ^^
    

    所以, .*? 匹配aaab将匹配ab


    在正则表达式中:

    :发生否或一次,? 是{0,1}的简称

    * :? 在量词使其成为不情愿的量词之后,它试图找到最小的匹配。


    假设你有像这样的字符串输入

    this is stackoverflow
    

    并使用正则表达式

    .*
    

    所以输出将是

    this is stackoverflow
    

    但如果你使用正则表达式

    .*?
    

    你的输出将是

    this
    

    所以从上面的例子可以清楚地看到,如果你使用。*它会给你整个字符串。 为了防止这种情况发生,如果你只想在你应该使用的空间之前先使用第一台装置

    有关更多实用知识,您可以查看http://regexpal.com/。

    链接地址: http://www.djcxy.com/p/76893.html

    上一篇: What exactly does .*? do in regex? ".*?([a

    下一篇: Regex: Remove lines containing