我有一个包含数学表达式的字符串,如:
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}
答案 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)
尝试在正则表达式中更具体,而不是仅仅替换值。以下是一些描述捕获的角色是否可变的规则
答案 4 :(得分:0)