4

我正在使用Tabs Studio对 Visual Studio 中的选项卡进行分组。我很难找到正确的正则表达式来使用我使用的约定对标签进行分组。

它使用两个命名的反向引用来工作。它将具有匹配项的选项卡分组,<Name>并允许您选择不同的<Ext>. 问题是,这里是我想要分组的文件:

  • 用户配置文件控制器.cs
  • UserProfileViewModel.cs
  • 用户配置文件.cshtml
  • 用户配置文件.js
  • 用户配置文件.less

到目前为止,我已经将前 3 个和后 2 个匹配到两个单独的组中的表达式。

(?<Name>(.*[/\\])?.+?)(?<Ext>(ViewModel|Controller)?\..+)

问题是操纵反向引用的输出。无论如何,比较是不区分大小写的,所以我真正需要做的就是-从反向引用输出中删除 。这可能吗?

注意:我把它放在 StackOverflow 上,因为它的核心是一个 RegEx 问题,尽管它对我的目的是非常具体的。我对此不太有信心,所以如果您认为这属于其他地方,请告诉我。

4

2 回答 2

1

我向 TabsStudio 的支持人员发送了电子邮件,询问是否有办法在插件中执行此操作。令我惊讶的是,在几封电子邮件之后,他们实现了这个功能!从2013 年 10 月 28 日发布的v3.1.5 开始就可以了。

新功能允许将多个具有相同名称的捕获组连接成一个字符串。

我的表达:

(?<Path>(.*[/\\])*)(?<Ext>_?)(?<Name>.+)(?<Ext>\.cshtml)|(?<Name>.+?)(?<Ext>(ViewModel|Model|Controller|Helper|Utilities)?\.cs)|(?<Ext>_?)((?<Name>.+)-)*(?<Name>.*)(?<Ext>(\.min)?\.(js|less|css))|(?<Name>(.*[/\\])?.+?)(?<Ext>\..+)

解释:

  1. (?<Path>(.*[/\\])*)(?<Ext>_?)(?<Name>.+)(?<Ext>\.cshtml)|

    • _UserProfile.cshtml
    • 用户配置文件.cshtml

      符合我的 Razor 视图。我在部分视图和布局前加上下划线。我在这里省略了路径,因为我倾向于不称呼我的观点Index.cshtml,因为我一直认为它是模棱两可的。

  2. (?<Name>.+?)(?<Ext>(ViewModel|Model|Controller|Helper|Utilities)?\.cs)|

    • 用户配置文件控制器.cs
    • UserProfileViewModel.cs
    • UserProfileUtilities.cs

      匹配 C# 代码文件的各种后缀。这当然可以扩展到包括其他内容,例如WrapperExtensionsFactory等。

  3. (?<Ext>_?)((?<Name>.+)-)*(?<Name>.*)(?<Ext>(\.min)?\.(js|less|css))|

    • 用户配置文件.js
    • 用户配置文件.min.css
    • _user-profile.less

      匹配样式和脚本。下划线被添加到扩展名之前,因为我使用它来.less为从未直接请求的任何文件(例如_mixins.less)添加前缀。

  4. (?<Name>(.*[/\\])?.+?)(?<Ext>\..+)

    • 用户配置文件.resx

      一个通用的后备正则表达式。这是 TabsStudio 中的默认设置。

我希望这可以帮助别人!

于 2013-10-30T14:48:12.547 回答
0

我对tab studio一无所知,我只知道RegEx

如果文件名中始终只有一个“-” 您可以将文件名分成两部分。

正则表达式将是这样的

(?<Name1>([^-]*[/\\])?[^-]+?)-?(?<Name2>[^-]+?)(?<Ext>(ViewModel|Controller)?\..+)

要删除文件名中的“-”,您的后引用将如下所示:

${Name1}${Name2}${Ext}
于 2013-10-22T19:53:27.987 回答