0

次のコードを変更しようとしています。

    x = 0;
            dx = (val - (x * x)) / (2.0 * x);
            x = x + dx;
            diff = val - (x * x);
            x = x;
return (x);

の中へ:

VARIABLE_TO_MONITOR_x = 0;
                dx = (val - (VARIABLE_TO_MONITOR_x * VARIABLE_TO_MONITOR_x)) / (2.0 * VARIABLE_TO_MONITOR_x);
                VARIABLE_TO_MONITOR_x = VARIABLE_TO_MONITOR_x + dx;
                diff = val - (VARIABLE_TO_MONITOR_x * VARIABLE_TO_MONITOR_x);
                VARIABLE_TO_MONITOR_x = VARIABLE_TO_MONITOR_x;
    return (VARIABLE_TO_MONITOR_x);

現在私は使用しています:

strLine.matches("^.*(?<![a-zA-Z])" +variableN[1] + "(?![a-zA-Z]).*$")

しかし、これは以下を返します:

    VARIABLE_TO_MONITOR_x = 0;
            dVARIABLE_TO_MONITOR_x = (val - (VARIABLE_TO_MONITOR_x * VARIABLE_TO_MONITOR_x)) / (2.0 * VARIABLE_TO_MONITOR_x);
            VARIABLE_TO_MONITOR_x = VARIABLE_TO_MONITOR_x + dVARIABLE_TO_MONITOR_x;
            diff = val - (VARIABLE_TO_MONITOR_x * VARIABLE_TO_MONITOR_x);
            VARIABLE_TO_MONITOR_x = VARIABLE_TO_MONITOR_x;
return (VARIABLE_TO_MONITOR_x);

この正規表現を微調整して、特に探している変数ではないインスタンスをキャッチしないようにするにはどうすればよいですか? これは、変数が別の単語に含まれているインスタンスをキャッチします...

どんな助けでも大歓迎です..

正規表現初心者..

編集: これも置き換えるコードです..

if (strLine.matches("^.*(?<![a-zA-Z])" + variableN[1] + "(?![a-zA-Z]).*$"))
{
    strLine = strLine.replace(variableN[1], VARIABLES + variableN[1]);
}
4

1 に答える 1

4
\b

これは、「単語境界」を使用する絶好の機会です。

strLine.split("\\b" +variableN[1] + "\\b");

変数名だけで正確に分割された行の配列を返します。"\b" は単語の端に一致します。

次に、新しい変数名を使用して一度に 1 つずつ印刷して、それらを接着することができます。またはさらに良い:

strLine.replaceAll("\\b" +variableN[1] + "\\b", "VARIABLE_TO_MONITOR_" + variableN[1]);

あなたのためにすべての交換を行います!

于 2012-08-28T03:32:27.967 に答える