Perl正则表达式:与此匹配,但不匹配

瑞安·邓菲

使用Perl和Regex,是否可以创建单行正则表达式以匹配某些短语,而不匹配其他短语?规则存储在哈希中,并且限定符(列)需要匹配输入给它的表达式。

我有一个包含限定词的对象,我希望将其作为单行正则表达式输入。例如:

my %filters = {
  rule_a  => {
    regex  => {
      qualifier_a => qr/fruits/i,
      qualifier_b => qr/apples|oranges|!bananas/i, # NOT bananas
    }
  }
}

因此,在这种情况下,我要匹配包含“水果”的qualifier_a和包含“苹果”,“橙色”而不是“香蕉”的qualifier_b。

该脚本如下循环遍历每个限定符:

my $match = 1; # Assume a match    
foreach my $qualifier (keys %filters{rule_a}{regex}) {
  # If fails to match, set match as false and break out of loop
  $match = ($qualifier =~ /%filters{rule_a}{regex}{$qualifier}/) ? 1 : 0);
  if(!$match){
   last;
  }
}
if($match){
  # Do all the things
}

有什么想法吗?

卢卡斯(Lucas Trzesniewski)

有点令人费解,但它的工作是:

^.*?bananas.*(*SKIP)(*FAIL)|apples|oranges

演示版

如果第一部分包含bananas,则第一部分将与整个字符串匹配,然后强制失败而不在下一个位置重试。

该演示用于.使行独立,但是s如果您的字符串可以包含换行符,则可以使用该选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

哪些文本与此正则表达式匹配?

来自分类Dev

JS正则表达式匹配“但不匹配”

来自分类Dev

正则表达式匹配,但不匹配

来自分类Dev

正则表达式以匹配url但不匹配urlMvc

来自分类Dev

正则表达式匹配点,但不匹配末尾

来自分类Dev

正则表达式匹配这些词,但排除与此匹配

来自分类Dev

Perl正则表达式可匹配(但不包括)可选的最终令牌

来自分类Dev

Python正则表达式匹配整数但不浮动

来自分类Dev

如果正则表达式匹配A而不是正则表达式B,则Perl打印

来自分类Dev

Perl正则表达式无法匹配行尾

来自分类Dev

Perl正则表达式以匹配特殊字符

来自分类Dev

打印正则表达式匹配Perl

来自分类Dev

Perl正则表达式匹配范围太广

来自分类Dev

Perl正则表达式匹配元音和辅音

来自分类Dev

使用正则表达式查找匹配项-Perl

来自分类Dev

Perl正则表达式条件匹配

来自分类Dev

正则表达式在Perl中不匹配

来自分类Dev

Perl迭代正则表达式匹配项的数量

来自分类Dev

Perl正则表达式与\ w +不匹配

来自分类Dev

Perl删除与正则表达式匹配的多行

来自分类Dev

单个冒号的Perl正则表达式匹配项

来自分类Dev

Perl与终端中的正则表达式匹配?

来自分类Dev

Perl正则表达式匹配数组

来自分类Dev

Perl正则表达式匹配数字

来自分类Dev

Perl-正则表达式和匹配变量

来自分类Dev

在Perl中匹配正则表达式的问题

来自分类Dev

在Perl中使用正则表达式进行匹配

来自分类Dev

Perl:正则表达式-将值与字母匹配

来自分类Dev

增强Perl正则表达式以实现平衡匹配