0

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

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}
4

5 回答 5

1

您可以在变量名之前和之后使用单词边界\b(例如\ba\b,对于 variablea\bb\bfor variable b)来匹配表达式中的变量。

于 2012-07-16T05:42:14.367 回答
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");
于 2012-07-16T05:57:04.200 回答
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);
于 2012-07-16T05:44:09.990 回答
0

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

  1. 变量必须有二元运算符(+、-、*、/),并在其右侧(如果开始)、左侧(如果结束)或两侧有空格。如果传入函数,它也可以在它周围有 paranethis。所以创建一个满足所有这些条件的正则表达式
于 2012-07-16T05:45:15.990 回答
0

你可以这样做:

正则表达式示例

然后用同样的方法b替换20

于 2012-07-16T05:50:19.057 回答