如何检查特定模式是否在某些字符之前?
How to check if specific pattern precedes some character?
我是 java 正则表达式的新手,我找不到答案。
这是我的正则表达式:-?\d*\.?\d+(?!i)
我希望它 而不是 识别例如。 String 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());
}
我希望此方法 return 0.0 但它保持 returning 55.0.
我做错了什么?
使用原子组避免回溯到整个数字点数字匹配模式:
"-?(?>\d*\.?\d+)(?!i)"
参见Java demo and a regex demo。
我是 java 正则表达式的新手,我找不到答案。
这是我的正则表达式:-?\d*\.?\d+(?!i)
我希望它 而不是 识别例如。 String 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());
}
我希望此方法 return 0.0 但它保持 returning 55.0.
我做错了什么?
使用原子组避免回溯到整个数字点数字匹配模式:
"-?(?>\d*\.?\d+)(?!i)"
参见Java demo and a regex demo。