perl,匹配多个正则表达式之一

时间:2017-07-14 20:41:39

标签: regex perl

我目前有以下代码:

if ($str =~ m{^[A-Z]+-\d+$} || $str =~ m{^\d+$}){
    # do stuff
}

是否可以将2个正则表达式组合成单个表达式?这会改善性能吗?

1 个答案:

答案 0 :(得分:3)

我会使用可选的non-capturing group并将这两者合并到

if ($str =~ m{^(?:[A-Z]+-)?\d+$}) {
    # do stuff
}

<强>详情

  • ^ - 字符串开头
  • (?:[A-Z]+-)? - 一个可选的非捕获组(?量词使其匹配1或0次)
  • \d+ - 一位或多位
  • $ - 字符串结束。