簡體   English   中英

Perl Template :: Toolkit正則表達式匹配兩個值

[英]Perl Template::Toolkit regex matching either values

我正在嘗試匹配Perl Template::Toolkit模塊中的任一字符串。

url從腳本中獲取其價值。

[% IF url == ("a/b/c" | "d/e/f") %]

這是正確的做法嗎? 我看了看文件。 它提到了“匹配”方法,但是我正在尋找一種更簡單的方法。

我認為在Template::Toolkit使用正則表達式有點尷尬,但是在這種情況下,您可以編寫

[% IF url == 'a/b/c' or url == 'd/e/f' %]

如果您需要更復雜的東西,那么您可能會誤解模板的作用,但是您始終可以在Perl中評估布爾條件並將該值傳遞到模板中


更新資料

或者您可以像這樣使用SWITCH

[% SWITCH url %]
[%   CASE [ 'a/b/c', 'd/e/f' ] %]
       ...
[% END %]

您可以使用match virtual方法測試一個正則表達式。 這很簡單。

use strict;
use warnings;
use Template;

my $t = Template->new;
$t->process( \*DATA, { urls => [qw(
    http://example.com/a/b/c
    http://example.com/xyz
    http://example.com/x/d/e/f
)] } );

__DATA__
[% FOREACH url IN urls %]
  [%- IF url.match('a/b/c|d/e/f') %]
    [%- url %] - match
  [%- ELSE %]
    [%- url %] - NO match
  [%- END %]
[% END %]

輸出:

http://example.com/a/b/c - match
http://example.com/xyz - NO match
http://example.com/x/d/e/f - match

或者,對腳本中的URL進行匹配,然后將布爾結果傳遞給模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM