2013-09-28 51 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