使用VS2010的查找对话框,我使用以下正则表达式:(?'outer'^div\#.+) input$
。
我正在尝试使用div#someId
中的内容div#someId input
创建一个名为“outer”的组(在这种情况下,someId
匹配.+
)
但是,Visual Studio正在显示对话框:Grouped expression is missing ')'
。
然而,)
位于+
之后。我逃脱或未能逃脱的是什么?
修改
我不一定需要使用命名分组,我只需要在替换中使用div#someId
来添加另一个选择器。
答案 0 :(得分:3)
Visual Studio的查找和替换似乎使用大括号{ }
而不是括号( )
来进行反向引用和命名引用。
由于有人可能会发现这在Visual Studio中的查找和替换中尝试使用backreferences / named grouping,因此以下是使用它们的示例:
替换
div#someId input
与
div#someId input,
div#someId textarea
查找:{^div\#.+ }input
并替换为:\0,\n\1textarea
它会将div#someId
(与^div\#.+
匹配的空格放入第一个反向引用。
使用反向引用构建替换字符串:
然后替换将替换整个字符串:\0
div#someId input
然后是逗号:,
div#someId input,
然后换行:\n
div#someId input,
然后是第一组:\1
div#someId input,
div#someId
然后是给定的文字:textarea
div#someId input,
div#someId textarea
一共制作替换字符串\0,\n\1textarea
更新:根据VS2012中的MSDN question,使用$n
而非\n
访问后向引用,因此替换字符串为:{{1} }
答案 1 :(得分:1)
您应该使用Productivity Power Tools的内联替换功能,它使用标准的.Net正则表达式