2017-09-26 81 views
0

我想寫一個簡單的正則表達式來除去實數中出現的所有.Java正則表達式除去文本中的實數除了所有句號

E.g. 該值爲0.19psi。水位必須恢復正常。 Mtl.temp將會很高..

下面的正則表達式選擇所有的實數。

((\+|-)?([0-9]+)(\.[0-9]+)?)|((\+|-)?\.?[0-9]+) 

我可以做的其他方式,其中我能爲圖案,其中它選擇.一個詞前面選擇和空間成功。但是,輸入測試不是以正確的語法方式編寫的。

+0

是0.12有效或應該 「」前面是一個數字? – marvel308

+0

.12也是有效的條目 – Betafish

+0

如果您想採用排除方式,請使用['s.replaceAll(「([+ - ]?[0-9] * \\。[0-9] +)| \\ 。「,」$ 1「)'](https://regex101.com/r/cdcOFl/1) –

回答

1

你可以使用正則表達式

\.(?!\d) 

regex101 demo

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "\\.(?!\\d)"; 
final String string = ".12 . 0.123 Hi.there I am .invalid."; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 
相關問題