正则表达式以匹配* .sublime-settings文件

时间:2018-10-15 23:34:15

标签: regex

Packages/Material Theme/widgets/Widget - Material-Theme.sublime-settings
Packages/DA UI/Widget - DA.sublime-settings
Packages/DA UI/Widget - DA (Windows).sublime-settings
Packages/TextMate/TextMate Syntax Definition (JSON).sublime-settings

Packages/DA UI/Widget - DA (Linux).sublime-settings
Packages/DA UI/Widget - DA (OSX).sublime-settings
Packages/User/YAML.sublime-settings

谁能有时间实现正则表达式以匹配前4个而不是后3个。

规则

  • Packages之后必须至少有一个文件夹。
  • Packages之后的文件夹不能为“用户”。
  • 名称(在最后斜杠之后)可以选择在.之前包含一对括号,但可能不包含其他平台的名​​称;如果当前平台是Windows,则不接受OSX和Linux(我们假设当前平台由变量platform表示)

这是我的尝试:

(?i)Packages/(?:[^/]+?/([^()]+?(?: \((?!OSX|Linux)\))?)\.sublime-settings)

它与3和4不匹配,与最后一个匹配。

预先感谢:)

1 个答案:

答案 0 :(得分:0)

您可以使用

(?i)^Packages/(?!User)(?:(?![^/]+$).)+/[^(.]+(?:\((?!OSX|Linux).+\))?\.sublime-settings

https://regex101.com/r/kgJMq4/2

  • (?!User)-第一个斜杠后的User负向前进
  • (?:(?![^/]+$).)+-重复不跟非斜杠字符和字符串结尾的任何字符
  • /[^(.]+-匹配最后的斜杠,然后重复非括号,非点字符,以检查可选组:
  • (?:\((?!OSX|Linux).+\))?-不以OSXLinux开头的词组的括号