匹配几个字符串中的一个

时间:2014-10-11 08:03:02

标签: regex perl

我有一个perl脚本,它会打开很多文件并搜索特定的字符串我需要匹配的是否匹配任何字符串然后转到下一个文件,这里是脚本的一部分

我想匹配以下其中一项:

function xyz () {

function xyz ()
{

xyz () {

{

或 function abc_xyz_abc(){ 要么 函数abc_xyz_abc() { 要么 function ab_cd_ef(){ 要么 abc_xyz(){ 要么 abc_xyz() {

以下是我的一些代码:

if (( $match =~ m/function/)|| ($match =~ /()/)  || ($match =~ m/\W+\/())  .......{
   print "Matched: File $line\n";
   next;
} else {
   print "Not found\n";
}

2 个答案:

答案 0 :(得分:0)

您可以为此

编写单个正则表达式

^(function)? ?\w+? ?(\(\))?\n? ? ?\{

将匹配所有四个

function xyz () {

function xyz ()
{

xyz () {

{

还要确保添加多行m修饰符

DEMO

答案 1 :(得分:0)

如果您确切知道要查找的排列,可以将它们存储在数组中,然后使用~~运算符进行检查。

 #fill this with all permutations
 my @match_list = ('function abc() {','other example'); 
 if($test ~~ @match_list) {
      print "match!";
}