所以我试图用科学记数法分割一个包含两个双精度的简单数学方程式,例如“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]
非常感谢任何帮助/解释!
答案 0 :(得分:1)
1&gt; contains
不会将正则表达式作为参数。因此,您尝试将(?<=\\d)-(?=\\d)
匹配为字符串而不是正则表达式
2&gt;要包含-
,您的正则表达式应为
(?<=\\d)(?=-\\d)