【问题标题】:What is the difference of regex Quantifier: .* and .*? [duplicate]正则表达式量词有什么区别:.* 和 .*? [复制]
【发布时间】:2016-09-05 09:50:21
【问题描述】:

对于正则表达式匹配^(?s).*?HOLIDAY.*?INN.*?EXPRESS.*?$^(?s).*HOLIDAY.*INN.*EXPRESS.*$ 使用.*? 代替.* 有什么好处?

换句话说,正则表达式量词有什么区别:.*.*?

【问题讨论】:

  • 点星号问号 (.*?) 告诉正则表达式引擎:“匹配任何字符,零次或多次,尽可能少”。引擎将从匹配零个字符开始,然后,因为它无法返回匹配项(因为没有找到“WORD 2”),它会再匹配一个字符,然后再匹配一个,以此类推。点表示任何东西都可以放在这里,星号表示至少 0 次,所以.* 接受任何字符序列,包括空字符串。

标签: regex string string-matching


【解决方案1】:

* 是一个贪心量词,这意味着它会匹配尽可能多的字母。 *? 是一个非贪心量词,它会匹配尽可能少的字母。

要了解这种情况下的区别,让我们看一下以下片段或正则表达式:HOLIDAY.*?INN。在这一个中,.*? 将匹配字符串HOLIDAY 和之后遇到的第一个INN 之间的文本。如果没有?,它可能会找到一个更远的INN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2013-11-09
    相关资源
    最近更新 更多