从字符串替换MatchCollection项

时间:2012-07-16 05:37:01

标签: c# regex

我有一个包含数学表达式的字符串,如:

strExpression= a+b+tan(a)+tan(b)+a+b

我想用a和b的值(比如a = 10,b = 20)替换这个表达式,使它成为:

10+20+tan(10)+tan(20)+10+20

但是当我使用Regex.Replace时,我得到了:

10+20+t10n(10)+t10n(20)+10+20

如何在正确的位置替换a和b的值。

我已经过滤掉了包含以下内容的MatchCollection对象:

{a},{b},{tan},{a},{tan},{b},{a},{b}

5 个答案:

答案 0 :(得分:1)

您可以在变量名称前后使用单词边界\b(例如\ba\b表示变量a\bb\b表示变量b)以匹配表达式中的变量。

答案 1 :(得分:1)

使用边界 \b

\b    The match must occur on a boundary 
      between a \w (alphanumeric) and a \W (nonalphanumeric) character.

例如:

\b\w+\s\w+\b

结果是

"them theme" "them them" in "them theme them them" 

以便使用:

Regex.Replace(inputString, @"(\bb\b)", "20");
Regex.Replace(inputString, @"(\ba\b)", "10");

答案 2 :(得分:0)

string expression = "strExpression= a+b+tan(a)+tan(b)+a+b";
expression = Regex.Replace(expression, @"\ba\b", "10");
expression = Regex.Replace(expression, @"\bb\b", "20");
Console.WriteLine(expression);

答案 3 :(得分:0)

尝试在正则表达式中更具体,而不是仅仅替换值。以下是一些描述捕获的角色是否可变的规则

  1. 变量必须具有二元运算符(+, - ,*,/),并且右侧(如果开始),左侧(如果结束)或两侧都有空格。如果在函数中传递它也可以在它周围使用paranethis。 因此,创建一个满足所有条件的正则表达式

答案 4 :(得分:0)

你可以这样做:

Regex Example

然后使用b的相同方式替换20