2013-09-28 90 views
1

所以我試圖在科學記數法中拆分一個包含兩個雙打的簡單數學方程,例如「54E-1-57E-1」。我試圖找到正則表達式來爲我做這件事,但我遇到了兩個問題。第一個是,下面的代碼成功地分割了我的字符串,但由於某種原因,negTest輸出了false,我不知道爲什麼。使用正則表達式來拆分數學方程式

public static void main(String[] args) { 
    String testString = "54E-1-57E-1"; 
    boolean negTest = string.contains("(?<=\\d)-(?=\\d)"); 
    System.out.println(negTest); 
    String[] output = testString.split("(?<=\\d)-(?=\\d)"); 
    System.out.println(Arrays.toString(output)); 
} 

//Output: 
//false 
//[54E-1, 57E-1] 

我認爲這是我的正則表達式的問題,但字符串成功地圍繞減號混淆了我。第二個問題是我如何分解它,以便減去包含在第二項中,例如,

[54E-1, -57E-1] 

任何幫助/解釋非常感謝!

回答

1

1>contains不採取正則表達式作爲parameter..So你試圖匹配(?<=\\d)-(?=\\d)作爲一個字符串不是正則表達式

2>要包括-,您正則表達式應該是

(?<=\\d)(?=-\\d) 
+0

啊, 謝謝!是否有另一種方法來檢查字符串是否包含特定的正則表達式? –

+0

@JeremyRobertson'matches'方法將regex作爲參數..所以你可以這樣做'boolean negTest = string.matches(「。* \\ d - \\ d。*」)' – Anirudha