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:

\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 に答える
1

\b変数名の前後に単語境界を使用して (たとえば\ba\b、 variableaおよび\bb\bvariable の場合b)、式内の変数と一致させることができます。

于 2012-07-16T05:42:14.367 に答える
0

あなたはこれで行うことができます:

正規表現の例

そして、次のb置換で同じ方法を使用します20

于 2012-07-16T05:50:19.057 に答える
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 に答える