Java 如何检查特定图案是否位于某个字符之前?
我是java正则表达式的新手,我找不到答案 这是我的正则表达式:Java 如何检查特定图案是否位于某个字符之前?,java,regex,lookahead,Java,Regex,Lookahead,我是java正则表达式的新手,我找不到答案 这是我的正则表达式:-?\\d*\\.?\\d+(?!i) 我希望它不识别例如字符串551i 这是我的方法: private static double regexMatcher(String s, String regex) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(s.replaceAll("\\s+", ""));
-?\\d*\\.?\\d+(?!i)
我希望它不识别例如字符串551i
这是我的方法:
private static double regexMatcher(String s, String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(s.replaceAll("\\s+", ""));
if (!matcher.find()) {
return 0;
}
String found = matcher.group();
return Double.parseDouble(matcher.group());
}
我希望这个方法返回0.0,但它一直返回55.0
我做错了什么?使用原子组避免回溯到整个数字-点-数字匹配模式:
"-?(?>\\d*\\.?\\d+)(?!i)"
请参阅和。您能再帮我一件事吗?为什么这个正则表达式将
-0.501
识别为-0?我怎么才能不去呢?正则表达式。对不起,我是说-0.501i
为-0?我的正则表达式有什么快速解决方案吗?使用原子组--(?>\d*\.?\d+(!i)