正则表达式仅匹配文件夹结构的最后一段

时间:2016-08-02 19:54:31

标签: regex

我有一个递归的文件夹列表,我需要在其中找到字符,但我不希望结果中包含子文件夹。我需要找到许多不同的字符,这些字符在迁移数据时会出现问题,包括星号,双周期等。

对于这个例子,我将使用双周期(..)。我只需要第一行,第四行和第七行

/System/Modules/Aspect/dmc_attachments_aspect..J5_D65
/System/Modules/Aspect/dmc_attachments_aspect..J5_D65/External Interfaces
/System/Modules/Aspect/dmc_attachments_aspect..J5_D65/Miscellaneous
/System/Modules/Collaboration/com.documentum.services.collaboration.IAttachmentsManager..J5_D65
/System/Modules/Collaboration/com.documentum.services.collaboration.IAttachmentsManager..J5_D65/External Interfaces
/System/Modules/Collaboration/com.documentum.services.collaboration.IAttachmentsManager..J5_D65/Miscellaneous
/System/Modules/TBO/dm_message_archive..J5_D65
/System/Modules/TBO/dm_message_archive..J5_D65/External Interfaces

另一个例子是星号 - 我只需要第一行,第四行和第七行。

/Public/Test/*Training
/Public/Test/*Training*/Documentation
/Public/Test/*Training*/SOPs
/Public/Test/Project**Tracking
/Public/Test/Project**Tracking/01
/Public/Test/Project**Tracking/02
/Public/Home*
/Public/Home*/Test

我可以使用正则表达式来满足这个要求吗?我很高兴运行多个查询/报告并更新主角(..或*)

我想澄清这个问题,以便我可以避免XY问题。

我们正在将数据从Documentum迁移到SharePoint,而Documentum没有相同的文件和文件夹名称限制,因此我们必须在迁移之前或动态地解决这些问题。我有一个包含Documentum当前所有文件夹的大文本文件(950k行),我试图查找因包含这些字符而不会迁移的所有文件夹。

问题在于,执行基本egrep '\*'不仅会提供包含此字符的顶级文件夹,还会提供所有子文件夹,这将剔除计数。

1 个答案:

答案 0 :(得分:1)

让我们说你正在寻找双重时期:

.*\.\.[^/]*$

将匹配两个句点,后跟无限数量的非斜杠字符,直到字符串结尾。通常,将\.\.替换为您要查找的内容。

regex101.com查看。 (星号版本here)。