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

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


UserProfileController.cs
UserProfileViewModel.cs
UserProfile.cshtml
user-profile.js
用户简档


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

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


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

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

最佳答案

我通过电子邮件发送了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>\..+)


说明:


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


_UserProfile.cshtml
UserProfile.cshtml

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

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


UserProfileController.cs
UserProfileViewModel.cs
UserProfileUtilities.cs

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

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


user-profile.js
user-profile.min.css
_user-profile.less

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

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


UserProfile.resx

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



我希望这可以帮助别人!

10-05 22:54
查看更多