请协助从树输出中查找重复的文件名。我在SublimeText中使用正则表达式找不到重复的文件名时遇到了麻烦。我正在搜索的文件来自发送到文本文件的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)
的不同组合但没有成功。
答案 0 :(得分:3)
((?<= )[\w.]+$)(?=[\s\S]*(?<= )(\1)$)
中看到s
修饰符(单行)
((?<= )[\w.]+$)(?=.*(?<= )(\1)$)
注意:由于某种原因,上面的模式(启用单行模式)会导致regex101超时。我已经在代码生成器下测试了代码,它的工作正常(doesn't timeout when used in code)。
((?<= )[\w.]+$)
将以下内容捕获到捕获组1中
(?<= )
确保空间前面的正面观察[\w.]+
匹配任何单词字符或点字符一次或多次$
断言行尾的位置(?=[\s\S]*(?<= )(\1)$)
确定后续匹配的正向前瞻
[\s\S]*
任意次数的任何角色。 (我们不在这里使用点,因为它不会与换行符匹配。如果您打开单行标志,则可以用[\s\S]
替换.
,这会强制.
1}}也匹配换行符)(?<= )
确保空间前面的正面观察(\1)
将以下内容捕获到捕获组2中
\1
匹配与捕获组1 $
断言行尾的位置在外行人的术语中,如果它在一个空格之后和行尾之前匹配整个文件名。然后它展望未来找到具有相同规则的副本(前一个空格,后一行结束)。