"从树输出中使用正则表达式查找重复文件名"

2024-09-28 20:59:15 发布

您现在位置:Python中文网/ 问答频道 /正文

请协助从树输出中查找重复的文件名。在sublimitext中使用regex查找重复的文件名时遇到问题。我正在搜索的文件来自发送到文本文件的tree命令的输出:

src/test/resources
|-- WPCDPS
|   `-- RiskIndicatorsEvaluationRuleTest.feature
|-- Accelerated.feature
|-- AcceptedAFS.feature
|-- AgeValidationRemoval.feature
|-- Anxiety.feature
|-- CheckDisabledOccupation.feature
|-- Extended.feature
|-- Financal.feature
|-- Fainancial.feature
|-- FloridaSpecific.feature
|-- Hypertension.feature
|-- LifeForceOrPending.feature
|-- LifestyleInformation.feature
|-- MinValue.feature
|-- Occupations
|   |-- OccupationTranslation.feature
|   |-- OccupationsWithPreConditions.feature
|   |-- Accelerated.feature
|   `-- OccupationsWithoutPreConditions.feature
|-- Florida.feature

我尝试过使用(?m)(\bAccelerated\.feature\b)(?=[\s\|\-\n]*\1)的不同组合,但没有成功。你知道吗


Tags: 文件test命令srctree文件名featureregex
1条回答
网友
1楼 · 发布于 2024-09-28 20:59:15

代码

See regex in use here

((?<= )[\w.]+$)(?=[\s\S]*(?<= )(\1)$)

使用s修饰符在(单行)上,如regex demo here

((?<= )[\w.]+$)(?=.*(?<= )(\1)$)

注意:由于某种原因,上面的模式(启用单行模式)导致regex101超时。我在代码生成器下测试了代码,它运行得很好(doesn't timeout when used in code)。你知道吗


解释

  • ((?<= )[\w.]+$)将以下内容捕获到捕获组1中
    • (?<= )正面向后看确保前面是空格
    • [\w.]+匹配任意单词字符或点字符一次或多次
    • $在行尾断言位置
  • (?=[\s\S]*(?<= )(\1)$)积极的前瞻性确保后面的匹配
    • [\s\S]*任意字符任意次数。(此处不使用点,因为它与换行符不匹配。如果启用单行标志,则实际上可以将[\s\S]替换为.,这将强制.也匹配换行符)
    • (?<= )正面向后看确保前面是空格
    • (\1)将以下内容捕获到捕获组2中
      • \1与捕获组1最近匹配的文本相同
    • $在行尾断言位置

通俗地说,如果文件名在空格之后,在行尾之前,那么它就匹配了整个文件名。然后,它将查找具有相同规则(前面的空格、后面的行尾)的副本。你知道吗

相关问题 更多 >