0

有几个字符串,我想从这些字符串中删除所有“RG( ** )”。例如:

1、原字符串:</p>

Push("Command", string.Format(R.G("#{0} this is a string"), accID));

结果:

Push("Command", string.Format("#{0} this is a string", accID));

2、原字符串:</p>

Select(Case(T["AccDirect"]).WhenThen(1, R.G("input")).Else(R.G("output")).As("Direct"));

结果:

Select(Case(T["AccDirect"]).WhenThen(1, "input").Else("output").As("Direct"));

3、原字符串:</p>

R.G("this is a \"string\"")

结果:

"this is a \"string\""

4、原字符串:</p>

R.G("this is a (string)")

结果:

"this is a (string)"

5、原字符串:</p>

AppendLine(string.Format(R.G("[{0}] Error:"), str) + R.G("Contains one of these symbols: \\ / : ; * ? \" \' < > | & +"));

结果:

AppendLine(string.Format("[{0}] Error:", str) + "Contains one of these symbols: \\ / : ; * ? \" \' < > | & +");

6、原字符串:</p>

R.G(@"this is the ""1st"" string.
this is the (2nd) string.")

结果:

@"this is the ""1st"" string.
this is the (2nd) string."

请帮忙。

4

2 回答 2

1

使用它,捕获组 0 是您的目标,组 1 是您的替换。

小提琴

R[.]G[(]"(.*?[^\\])"[)]

作用于 #2 和 #4 字符串的示例以及新的边缘情况R.G("this is a (\"string\")")

var pattern = @"R[.]G[(]\""(.*?[^\\])\""[)]";
var str = "Select(Case(T[\"AccDirect\"]).WhenThen(1, R.G(\"input\")).Else(R.G(\"output\")).As(\"Direct\"));";
var str2 = "R.G(\"this is a (string)\")";
var str3 =  "R.G(\"this is a (\\\"string\\\")\")";

var res =  Regex.Replace(str,pattern, "\"$1\"");
var res2 = Regex.Replace(str2,pattern, "\"$1\"");
var res3 = Regex.Replace(str3,pattern, "\"$1\"");
于 2013-05-16T13:55:13.350 回答
0

试试这个:

var result = Regex.Replace(input, @"(.*)R\.G\(([^)]*)\)(.*)", "$1$2$3");

解释:

(.*)     # capture any characters
R.G\(    # then match 'R.G.'
([^)]*)  # then capture anything that isn't ')'
\)       # match end parenthesis
(.*)     # and capture any characters after

$1$2$3 将您的整个匹配替换为捕获组 1、2 和 3。这有效地删除了不属于这些匹配的所有内容,即“RG( * )”部分。

请注意,如果您的字符串在某处包含“RG”或右括号,您将遇到问题,但根据您的输入数据,也许这会很好地解决问题。

于 2013-05-16T13:18:31.400 回答