2017-09-26 66 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)); 
    } 
}