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" 匹配单词的边缘。

然后,您可以使用您的新变量名一次将其打印出来,将其粘合在一起。或者更好:

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

将为您完成所有更换!

于 2012-08-28T03:32:27.967 回答