Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用正则表达式从字符串中提取数字_Java_Regex_Function_Debugging_Parsing - Fatal编程技术网

在java中使用正则表达式从字符串中提取数字

在java中使用正则表达式从字符串中提取数字,java,regex,function,debugging,parsing,Java,Regex,Function,Debugging,Parsing,我无法使用正则表达式从预定义的输入字符串中提取(双精度)数字。 字符串为: String inputline ="Neuer Kontostand";"+2.117,68"; 为了成功解析数字,我需要抑制前导的+,同时保留可选的-。此外,我必须切断号码前/后的“ 当然,我可以进行多步字符串操作,但有人知道如何使用一个正则表达式以更优雅的方式完成所有操作吗 到目前为止,我尝试的是: Pattern p = Pattern.compile("-{0,1}[0-9.,]*"); Matcher m

我无法使用正则表达式从预定义的输入字符串中提取(双精度)数字。
字符串为:

String inputline ="Neuer Kontostand";"+2.117,68";
为了成功解析数字,我需要抑制前导的
+
,同时保留可选的
-
。此外,我必须切断号码前/后的

当然,我可以进行多步字符串操作,但有人知道如何使用一个正则表达式以更优雅的方式完成所有操作吗

到目前为止,我尝试的是:

Pattern p = Pattern.compile("-{0,1}[0-9.,]*");
Matcher m = p.matcher(inputline);
String substring =m.group();
输出:

+
2.117,68
输出:

+
2.117,68
解释

-? # an optional minus sign [0-9]+ # decimal digits, at least one (?: # begin non-capturing group , # the decimal point (German format) [0-9]+ # decimal digits, at least one ) # end non-capturing group, make optional 解释

-? # an optional minus sign [0-9]+ # decimal digits, at least one (?: # begin non-capturing group , # the decimal point (German format) [0-9]+ # decimal digits, at least one ) # end non-capturing group, make optional
将要用括号([0,9,[*])1提取的部分包围起来。<代码> {0,1}可以写成<代码> <代码> 2;您的正则表达式将匹配许多不是数字的东西(例如:代码> <代码>或<代码>…>代码>甚至空白字符串)。将要用括号括起来的部分([0,9,[*])1。<代码> {0,1}。< /代码>可以写成<代码> >代码> 2;您的正则表达式将匹配许多不是数字的东西(例如:代码> <代码>或<代码>…<代码>甚至空白字符串)。仍然不能工作:<代码> +/COD>未逃脱(语法错误),无论如何都应该被删除。仍然不能工作:<代码> +<代码>是非逃逸(语法错误)。无论如何都应该被删除。这更好,但并不能解决OP没有在任何地方使用正则表达式的问题:)@Tim这是…好吧。这不是问题的一部分。;)好吧,不是真的。OP只是说他没有正确提取数字。他的正则表达式会起作用(有些),但他从未使用过它。所以这是他的实际问题。@Tim关于令人难以置信的大量Java正则表达式使用示例,我想说提及这一事实已经足够了。谢谢!这非常快,我的正则表达式现在运行良好。我只将解决方案中的第一个组扩展到[0-9],以包括分组分隔符(德语格式).我多次尝试的关键问题是在[0-9]后面使用星号而不是加号。非常感谢!这样更好,但并不能解决OP没有在任何地方使用正则表达式的问题:)@Tim这是……好吧。这不是问题的一部分。;)好吧,不是真的。OP只是说他没有正确提取数字。他的正则表达式会起作用(有些),但他从未使用过它。所以这是他的实际问题。@Tim关于令人难以置信的大量Java正则表达式使用示例,我想说提及这一事实已经足够了。谢谢!这非常快,我的正则表达式现在运行良好。我只将解决方案中的第一个组扩展到[0-9],以包括分组分隔符(德语格式)。我在多次尝试中遇到的主要问题是在[0-9]之后使用星号而不是加号。非常感谢!
Pattern.compile("-?[0-9]+,[0-9]+")