排除文件夹并使用regex匹配根文件夹中的所有.html模式文件

排除文件夹并使用regex匹配根文件夹中的所有.html模式文件,regex,drupal,migration,Regex,Drupal,Migration,我正在做从html到Drupal的迁移。使用迁移模块 在我们的自定义迁移脚本中,我需要匹配除images文件夹之外的所有文件夹中的所有.html文件 $regex = '/[a-zA-Z0-9\-][^_ss\d][^_\d]+\.html/'; //this will do for 3 and 4 files 将此正则表达式传递给$list\u files=new MigrateListFiles([],[],$regex) 下面是html文件的格式 /magazines/sample.h

我正在做从html到Drupal的迁移。使用迁移模块

在我们的自定义迁移脚本中,我需要匹配除images文件夹之外的所有文件夹中的所有.html文件

$regex = '/[a-zA-Z0-9\-][^_ss\d][^_\d]+\.html/'; //this will do for 3 and 4 files 
将此正则表达式传递给
$list\u files=new MigrateListFiles([],[],$regex)

下面是html文件的格式

/magazines/sample.html 
/test/index.html
/test/format_ss1.html
/test/folder/newstyle_1.html
/images/two.html
我只需要获得前2个html文件,即,我们排除了以“[0-9]”和“_ss[0-9]”结尾的文件以及images文件夹中的.hmtl文件

$regex = '/[a-zA-Z0-9\-][^_ss\d][^_\d]+\.html/'; //this will do for 3 and 4 files 
我成功地排除了3和4,但我无法排除images文件夹中的.html文件

$regex = '/[a-zA-Z0-9\-][^_ss\d][^_\d]+\.html/'; //this will do for 3 and 4 files 
但我需要排除图像文件夹

我已经试过了

$regex = '/[^images\/][a-zA-Z0-9\-][^_ss\d][^_\d]+\.html/'; // not working
在PHP脚本中,它将在哪里工作

$regex = '~^(?!/images/)[a-zA-Z0-9/-]+(?!_ss\d|\d)\.html$~' //works in php script
有人能帮我解决这个问题吗?

试试看
/((?!images)[0-9a-zA-Z])+/[^\d]*[^\d]+\.html

匹配项:

/magazines/sample.html 
/test/index.html
/test/folder/newstyle.html
/test/format_ss.html
不匹配:

/test/format_ss1.html
/test/folder/newstyle_1.html
/images/two.html
/images/1.html
/test/folder/newstyle1.html
/test/folder/newstyle_12.html

这可以接受吗?

这是Drupal/Migrate特有的问题-regex只是文件名(而不是目录)的regex,因为它最终会传递给

文件扫描目录($dir,$mask,$options=array(),$depth=0)

$mask:要查找的文件的preg_match()正则表达式

我认为排除某些目录的唯一方法是,如果行具有不需要的路径,则在prepareRow()函数中抛出false

函数prepareRow($row) 加载数据行后,源类next()方法调用prepareRow()方法。参数$row是一个stdClass对象,包含源提供的原始数据。实现prepareRow()有两个主要原因:

在数据行通过任何其他方法和处理程序之前对其进行修改:例如,获取相关数据、拆分源字段、根据某些逻辑组合或创建新的源字段

有条件地跳过一行(返回FALSE)。


我想在我有时间玩它之前,它会被回答的。如果不行,我会尽量在空闲时间(还有5个小时)回答。我不想给出未经检验的想法。同时,如果你有时间,请看这个。。你可以在一台计算机上验证它,你知道它为什么不工作或者在哪里失败吗?@kjhhf:我不知道它的具体原因。但是~^(?)/images/[a-zA-Z0-9/-]+(?!\u ss\d\d)\.html$~。。这将在php脚本中非常好地工作。。但是它在Drupal中不起作用。你能从链接中添加一些内容吗?添加内容并提供更完整的答案