代码之家  ›  专栏  ›  技术社区  ›  SerjantArbuz

为什么正则表达式从末尾搜索第二组?

  •  0
  • SerjantArbuz  · 技术社区  · 9 月前

    我在应用程序中进行了搜索,并使用正则表达式突出显示找到的匹配项。但我注意到有时它匹配得有点不正确(?)。

    例如,正则表达式( 不区分大小写 ): (the).*(te) 。测试短语的结果将是(测试 here ):

    编辑 表达与;文本以查看比赛。滚动匹配或表达细节。PCRE和;支持RegEx的JavaScript风格。使用Te验证您的表达式 sts模式。

    如果你看看测试短语,它包含了很多 te 部分 之前 最后一个。感觉就像是从队伍的尽头开始搜索。但我希望它应该是这样的:

    编辑 表达与;Te xt查看比赛。滚动匹配或表达细节。PCRE和;支持RegEx的JavaScript风格。使用测试模式验证您的表达式。

    我需要它来找到 第一 发生。由于在应用程序中是用户输入的查询,我不知道正则表达式到底是什么。但它有一个模式: (word1).*(word2).*(word3) .

    我做错了什么?正则表达式不正确,还是它只是一种工作方式?

    1 回复  |  直到 9 月前
        1
  •  2
  •   Bohemian    9 月前

    更改贪婪量词 .* 对于不情愿的量词 .*? :

    the.*?te
    

    请注意,您不需要分组括号。

    请参阅 live demo .