Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配几个字符串中的一个_Regex_Perl - Fatal编程技术网

Regex 匹配几个字符串中的一个

Regex 匹配几个字符串中的一个,regex,perl,Regex,Perl,我有一个perl脚本,它打开许多文件并搜索特定字符串。我需要的是匹配任何匹配的字符串,然后转到下一个文件,这里是脚本的一部分 我想匹配以下选项之一: function xyz () { 或 或 或 或 函数abc_xyz_abc(){ 或 函数abc_xyz_abc() { 或 函数ab_cd_ef(){ 或 abc_xyz(){ 或 abc_xyz() { 以下是我的一些代码: if (( $match =~ m/function/)|| ($match =~ /()/) || ($mat

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

我想匹配以下选项之一:

function xyz () {

或 函数abc_xyz_abc(){ 或 函数abc_xyz_abc() { 或 函数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";
}

您可以为此编写一个正则表达式

^(函数)??\w+?(\(\)?\n???{

将匹配所有四个

function xyz () {

function xyz ()
{

xyz () {

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


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

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

您可以使用括号来匹配多个备选方案中的一个。如果要匹配正则表达式,您还需要在正则表达式中转义括号。谢谢,但是xyx应该是这样的(\W+)(())吗,因为它可能是不同的字母,所以我将其更改为:if($match=~m/(function)?(\W+)(())?\n???\{){….如果我想在找到mact时退出循环并转到下一个文件,我会使用以下行“return$1 if defined$1它不会退出循环,再次感谢..是的..你是正确的…我只考虑了你的示例..更正了答案Thred谢谢,我认为我使用了你的建议,但它只返回了一些文件,而不是所有的文件,这是由于一些文件有“\ux”函数名为xyz_abc或abc_xyz_abc_xyz,怎么能捕捉到它们?我不确定为什么它对我不起作用,我在演示中尝试了abc_x_abc(),没有匹配项。如果不起作用,请查看完整内容尝试用
[a-z\u]替换
\w
if (( $match =~ m/function/)|| ($match =~ /()/)  || ($match =~ m/\W+\/())  .......{
   print "Matched: File $line\n";
   next;
} else {
   print "Not found\n";
}
function xyz () {

function xyz ()
{

xyz () {

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