在贪婪匹配时停在第一场比赛

时间:2014-08-18 20:48:41

标签: regex mod-rewrite

我尝试创建一个mod_rewrite规则,以匹配Accept-language标头中的第一个语言。标题可能只包含一个语言代码,但通常包含多个语言代码。我需要先从我的支持的语言列表中进行匹配。

例如,这是受支持语言的规则:^.*(sv|ne|nb|pl|en).*$

这是示例Accept-language标题:no-nb, en-US, en

我面临的问题是它给了我最后一场比赛,即en字符串。但在这种情况下,我需要先匹配nb

这是一个正则表达式fiddle,用于说明此问题。

请注意,我只是故意匹配no-nb语言代码的一部分。

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

^.*?(sv|ne|nb|pl|no|en).*$
   ^--- Note the '?' to use non-greedy quatifier

http://regex101.com/r/uP5dN5/2