正则表达式-根据不同的字符串条件替换特定的字符串

时间:2019-04-17 09:18:16

标签: regex visual-studio replace

我正在处理许多代码行的替换。 我需要做的是根据各种条件替换特定的字符串。 这是字符串:

private IWebElement UserList_Link { get; set; }

我需要用不同的字符串替换{ get; set; },例如=something 显然,进入搜索{ get; set; }并替换所有内容。但是我只需要包含private IWebElement的行。

因此最终的字符串应如下所示:

private IWebElement UserList_Link = element;

我尝试过这样的正则表达式,但它在花括号之前是个好主意:

  

(?<= IWebElement \ w)(。*)

我不确定该怎么做。你能帮我一个人吗?

3 个答案:

答案 0 :(得分:0)

您可以使用正向超前

^(?=private IWebElement.*)(.*){ get; set; }$
  • ^-字符串的开头
  • (?=private IWebElement.*)-使private IWebElement必须匹配的正向前进
  • (.*)-匹配除换行(捕获的组)以外的所有内容
  • $-字符串结尾

Demo

答案 1 :(得分:0)

使用以下View4

regex

Demo

使用C#替换:

(private IWebElement.*?) ({ get; set; })

string str = "private IWebElement UserList_Link { get; set; }"; str = Regex.Replace(str, @"(private IWebElement.*?) ({ get; set; })", "$1 = element"); Console.WriteLine(str); 表示正则表达式匹配的第一组。

答案 2 :(得分:0)

在Visual Studio 2017搜索和替换对话框中,您可以使用

查找(?<=IWebElement\s+\w+\s+){[^{}]*}
替换= element

请参见this .NET regex demo

在这里,(?<=IWebElement\s+\w+\s+)是正向查找,它与字符串中紧跟IWebElement,1+空格,1 +字符字符,1 +空格的位置匹配。它具有可变的宽度,可与有限的正则表达式引擎一起使用。然后,{[^{}]*}匹配并消耗{,除了{}之外的0个或更多字符,然后是}

您也可以使用更常见的正则表达式,而不会在后面留有可变宽度:

查找(IWebElement\s+\w+\s+){[^{}]*}
替换$1= element

请参见this regex demo

Regulex图:

enter image description here

在这里,(IWebElement\s+\w+\s+)是ID = 1的捕获组,您可以在替换模式中使用$1反向引用来引用其内容。如果您在$1之后输入数字,请使用${1}明确的格式。