ベロシティ テンプレートでユーザー エージェントを照合しようとしています。
$ua は印刷されますが、一致します! ではない。私は何を間違っていますか?
#set( $ua = $request.getHeader('User-Agent'))
<p>$ua</p>
#if( $ua.matches('/Windows.(NT|XP|ME|9)/'))
<p>Matches!</p>
#end
ベロシティ テンプレートでユーザー エージェントを照合しようとしています。
$ua は印刷されますが、一致します! ではない。私は何を間違っていますか?
#set( $ua = $request.getHeader('User-Agent'))
<p>$ua</p>
#if( $ua.matches('/Windows.(NT|XP|ME|9)/'))
<p>Matches!</p>
#end
これが古いことは知っていますが、この問題の解決策は、一致に提供される正規表現が true を返すために文字列全体と一致する必要があることです。たとえば、次のようになります。
$ua.matches('Windows.(NT|XP|ME|9)')
false を返しますが、
$ua.matches('.*Windows.(NT|XP|ME|9).*')
期待どおりに動作し、Windows.(...) が文字列内にある場合は true を返します。
これは少し奇妙で、今日はしばらく私を悩ませました。
PS - 正規表現にスラッシュは必要ありません!