2012-08-28 25 views
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]); 
} 
+3

arggggg,我的眼睛!我的眼睛!!! –

+0

:)我覺得同樣的方式... dx單獨與其他'x'變量一起更改.. – BigBug

+2

請考慮使用符合Java標準的較短變量名稱。沒有必要爲自己做更難的事情,更重要的是,爲了我們。 –

回答

4
\b 

這是一個偉大的時刻用 「單詞邊界」!

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

將返回一個由您的變量名稱精確分解的線段數組。 「\ b」匹配單詞的邊緣。

然後,您可以使用新變量名一次將其打印出來,將它粘在一起。或更好:

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

將做所有的替代你!

+0

哦,哇,那真是太酷了。謝謝! +1和最佳答案 – BigBug