我有字符串:条目,x:0.0 y:-0.9980941条目,x:1.0 y:-0.9686125条目,x:2.0 y:0.9044667
如何通过正则表达式获取所有浮点值: 0.0,-0.9980941,1.0,-0.9686125,2.0,0.9044667
答案 0 :(得分:3)
以下是来自https://www.regular-expressions.info/floatingpoint.html
的正则表达式??[ - +] [0-9] * [0-9] +
答案 1 :(得分:0)
您可以使用java.util.regex包来执行此操作。
正则表达式\ d匹配数字&相当于[0..9]。 \ d *要求匹配前面表达式的0次或更多次出现。 '?'匹配0或1次出现的点。 \ d +匹配前一个\ d的表达式的1个或多个。所以regEx一起搜索字符串中的[0..9]。[0..9]模式。
了解java_regular_expressions以了解*之间的差异。 ,?和regEx中的+。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "Entry, x: 0.0 y: -0.9980941 Entry, x: 1.0 y: -0.9686125 Entry, x: 2.0 y: 0.9044667";
String regEx = "\\d*\\.?\\d+";
Pattern patternObject = Pattern.compile(regEx);
Matcher matcher = patternObject.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
答案 2 :(得分:0)
请注意@Ashish Mathew建议的[-+]?[0-9]*.?[0-9]+
模式对我不起作用,因为.
需要转义。
此外,我建议您阅读他发布的链接,以便找到最终的解决方案及其构建方式和解释。
这是我基于它的工作代码:
public static void main(String[] args) {
String s = " Entry, x: 0.0 y: -0.9980941 Entry, x: 1.0 y: -0.9686125 Entry, x: 2.0 y: 0.9044667";
List<String> allMatches = new ArrayList<>();
Matcher m = Pattern.compile("[-+]?[0-9]+\\.?[0-9]*").matcher(s);
while (m.find()) {
allMatches.add(m.group());
}
// [0.0, -0.9980941, 1.0, -0.9686125, 2.0, 0.9044667]
System.out.println(allMatches);
}