Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 Perl文件名匹配_Regex_Perl_Filenames - Fatal编程技术网

Regex Perl文件名匹配

Regex Perl文件名匹配,regex,perl,filenames,Regex,Perl,Filenames,我试图在perl中找到一些非常具体的文件名模式匹配 我有一系列文件,名为: AAA.test.xml and AAA.xml. 我将完整的文件路径传递给函数 我想比较文件名,如果文件名是AAA.xml,我想将其复制到另一个目录 这是我的问题:是否有一种方法可以比较文件名并检查文件名中是否包含2个点 编辑: 使用正则表达式也很好,我只是不知道如何在perl中使用它。如果您有文件名(听起来像是这样),您可以使用一个简单的正则表达式来检查两个文本句点。例如: if ($name =~ /\..*\.

我试图在perl中找到一些非常具体的文件名模式匹配

我有一系列文件,名为:

AAA.test.xml and AAA.xml.
我将完整的文件路径传递给函数

我想比较文件名,如果文件名是AAA.xml,我想将其复制到另一个目录

这是我的问题:是否有一种方法可以比较文件名并检查文件名中是否包含2个点

编辑: 使用正则表达式也很好,我只是不知道如何在perl中使用它。如果您有文件名(听起来像是这样),您可以使用一个简单的正则表达式来检查两个文本句点。例如:

if ($name =~ /\..*\./) { do stuff }
需要注意的是,字符“.”在正则表达式中是特殊的。字符序列“.”表示文字“;不带反斜杠的字符序列“”表示任何字符。另外,“*”意味着前面的内容需要匹配零次或多次

因此,上面给出的正则表达式的意思是“查找一个文本“.”字符,然后是任意数量的任何字符,然后是另一个文本“.”

如果您有文件名(听起来像是这样),您可以使用一个简单的正则表达式来检查两个文本句点。例如:

if ($name =~ /\..*\./) { do stuff }
需要注意的是,字符“.”在正则表达式中是特殊的。字符序列“.”表示文字“;不带反斜杠的字符序列“”表示任何字符。另外,“*”意味着前面的内容需要匹配零次或多次


因此,上面给出的正则表达式的意思是“查找一个文字'”,然后是任意数量的字符,然后是另一个文字'。”

谢谢!我想象过,我记得是从模式匹配开始的,但这是第一次在perl中这样做,我打算使用glob,但您需要一个文件名数组!非常感谢。非常感谢。我想象过,我记得是从模式匹配开始的,但这是第一次在perl中这样做,我打算使用glob,但您需要一个文件名数组!非常感谢。