正则表达式不匹配。_filename.php文件
MAC OSX创建一些不需要的点下划线文件来存储文件信息 目前,我的文件系统的一个目录中有两个文件-正则表达式不匹配。_filename.php文件,php,regex,Php,Regex,MAC OSX创建一些不需要的点下划线文件来存储文件信息 目前,我的文件系统的一个目录中有两个文件-Test.php和\u Test.php 我需要编写一个preg_匹配,以便只接受第一个文件并忽略元数据文件。例如 preg_match('/^(.+)\.php$/', $fileName, $matches); 但是,这里,$matches为$fileName=Test.php和\u Test.php返回相同的输出 是否要修改正则表达式以忽略元数据文件并只接受Test.php?使用a断言字符
Test.php
和\u Test.php
我需要编写一个preg_匹配,以便只接受第一个文件并忽略元数据文件。例如
preg_match('/^(.+)\.php$/', $fileName, $matches);
但是,这里,$matches
为$fileName=Test.php
和\u Test.php
返回相同的输出
是否要修改正则表达式以忽略元数据文件并只接受Test.php
?使用a断言字符串不以开头。\u
:
^(?!\._)(.+)\.php$
PHP示例
<?php
$tests[] = "Test.php";
$tests[] = "._Test.php";
$tests[] = ".Testing.php";
$tests[] = "_Testing2.php";
$tests[] = "._greajo.com";
$tests[] = "_.greajo.com";
foreach ($tests as $test) {
if (preg_match("/^(?!\._)(.+)\.php$/i", $test, $m)) {
echo "Valid file: ".$m[1].PHP_EOL;
}
else {
echo "Invalid file".PHP_EOL; // discard?
}
}
请参见演示谢谢您的回答。我只需要匹配.php
文件,还需要不带扩展名的文件名出现在$matches[1]中,这与我的正则表达式有关。
preg_match('/^[^\.].*\.php$/', $fileName, $matches);