C# Visual Studio 2017-查找并替换为文本

C# Visual Studio 2017-查找并替换为文本,c#,regex,visual-studio,C#,Regex,Visual Studio,我在一个类中拥有此属性: public string fooo { get; set; } 我需要把它改写成这样: [BsonElement("fooo")] public string fooo{ get; set; } 我必须为许多属性执行此操作,因此我希望在VisualStudio中使用“查找替换”功能 我使用以下宏: Search : public Replace : [BsonElement("")]\n\t\tpublic 如何使用regex动态获取fooo名称并将其放入

我在一个类中拥有此属性:

public string fooo { get; set; }
我需要把它改写成这样:

[BsonElement("fooo")] 
public string fooo{ get; set; }
我必须为许多属性执行此操作,因此我希望在VisualStudio中使用“查找替换”功能

我使用以下宏:

Search : public 
Replace : [BsonElement("")]\n\t\tpublic 

如何使用regex动态获取
fooo
名称并将其放入
bsonement
属性中?在全球范围内,是否可能有一个指向此文档的链接,我还没有找到它。

这里有一个解决方案,用于格式化为
公共字符串fooo{get;set;}
(空格很重要:一行,在属性名称后加空格)

搜索:

(public) (\w+) (\w+) { get; set; }
替换:

[BsonElement("$3")]\n\t\t$1 $2 $3 { get; set; }
说明:

$1
$2
$3
是在
()
中捕获的组

\w
相当于
[a-zA-Z0-9\]
,因此
(\w+)
将匹配任何类型名称和属性名称

  • 打开查找和替换(Ctrl+H)
  • public(\w+)(\w+{get;set;}
    粘贴到查找字段中
  • [bsonement($2”)]\n\t\t public$1$2{get;set;}
    粘贴到替换字段中
  • 启用正则表达式(Alt+E)
  • 全部替换(Alt+A)。或者有选择地一个接一个去
  • 但是请注意,如果您有一些其他关键字,如
    virtual
    static
    等,则需要更多的捕获组和更改索引。

    查找:
    (\s*)公共字符串(\w+{get;set;}

    替换:
    $1[bsonement($2”)]\n$1公共字符串$2{get;set;}

    此解决方案保留定义前的空白(制表符等)


    我如何才能在第一个w+中排除
    ,并包括
    ((?!类)\w+)
    (负前瞻);包括运算符:
    ([\w?]+)