首页 > 解决方案 > 正则表达式 - 在匹配字符串后定位第一个 ')'

问题描述

我正在我的 C# 代码库中进行质量方法替换。我的代码行如下所示:

Assert.That(Edit.FundsTable.GetCellByIndexes(0, 2).Text.Contains("Employer Request IPM A"));

问题是,最初调用 GetCellByIndexes 时,我们有另一个方法基本上做同样的事情,让我们以两种方式完成完全相同的任务。我们将其更改为更标准的方式如下:

Assert.That(Edit.FundsTable.Cells[0, 2].Text.Contains("Employer Request IPM A"));

我正在尝试进行 VS 替换所有替换以将 GetCellByIndexes 调用移动到 Cells 调用。问题在于正确的参数。我可以全部替换

GetCellByIndexes(

Cells[

非常简单地。问题是将方法调用的右参数更改为方括号。有谁知道如何使用正则表达式识别“GetCellByIndexes”字符串之后的第一个正确参数?

标签: regexvisual-studioreplace

解决方案


利用

GetCellByIndexes\(([^()]+)\)

替换为Cells[$1]。见证明

代码 解释
GetCellByIndexes 'GetCellByIndexes'
\( '('
( 分组并捕​​获到 $1:
  [^()]+   任何字符,除了:'(', ')'(1 次或多次(匹配尽可能多的数量))
) 1美元结束
\) ')'

推荐阅读