我有这样一个长期的reggex:
if( $var =~ /(word1|word2|word3|word4)/
但实际上我有超过4个单词而且它们要大得多
如何在不破坏reggex的情况下添加新行以使其更具可读性?
例如。
if($var =~ /(word1 |
word2 | etc
答案 0 :(得分:6)
添加/x
修饰符,忽略正则表达式中的空格:
if ($var =~ / ( word1 |
word2 |
word3
)/x
) {
您还可以通过|
加入单词并使用qr
运算符创建正则表达式,从列表中构建正则表达式:
my $regex = join '|', qw( word1
word2
word3
);
$regex = qr/($regex)/;
答案 1 :(得分:2)
您可以通过...首先不使用正则表达式使正则表达式更具可读性。如果您的实际代码实际上与您的示例一样简单(即,只是匹配备用字符串而没有任何模式匹配),为什么不使用哈希呢?
my $var = 'word1';
my %lookup = map { $_ => 1 } qw(word1 word2 word3 word4);
if ($lookup{$var}) {
# do something...
}