2017-03-14 20 views
3

我是新的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()); 

} 

我想這個方法返回0.0,但它一直返回55.0。

我在做什麼錯?

回答

1

使用的原子團,以避免回溯到整個位點位匹配圖案:

"-?(?>\\d*\\.?\\d+)(?!i)" 

Java demoregex demo

+0

你能幫助我多一件事嗎?爲什麼這個正則表達式將「-0.501」識別爲** - 0 **?我該如何讓它不能? –

+0

正則表達式[與預期的數字匹配](https://regex101.com/r/8g0vAL/1)。我[無法重播](http://ideone.com/s7Lto0)。 –

+0

對不起,我的意思是'-0.501i'爲** - 0 **?有沒有我的正則表達式的快速解決方案? –

相關問題