什么';在Java中,什么是一个很好的实数正则表达式?
在Java中,什么是好的实数正则表达式 我创建了正则表达式什么';在Java中,什么是一个很好的实数正则表达式?,java,regex,Java,Regex,在Java中,什么是好的实数正则表达式 我创建了正则表达式([-]?[\\d]*\\.\.\\d]*),并根据以下预期输出对其进行了测试: 输入输出工作? -------------------------------------- qwerty34.34abcd 34.34是 qwe-34.34.34abcd-34.34号 +17-9abc 17.0是的 -.abc0 0.0号 我必须准确地说出专栏文章的内容。 请提供通过所有这些测试的正则表达式。请尝试以下操作: ((\+|-)?([0-9
([-]?[\\d]*\\.\.\\d]*)
,并根据以下预期输出对其进行了测试:
输入输出工作?
--------------------------------------
qwerty34.34abcd 34.34是
qwe-34.34.34abcd-34.34号
+17-9abc 17.0是的
-.abc0 0.0号
我必须准确地说出专栏文章的内容。
请提供通过所有这些测试的正则表达式。请尝试以下操作:
((\+|-)?([0-9]+)(\.[0-9]+)?)|((\+|-)?\.?[0-9]+)
这将匹配实数,包括整数,带或不带符号(小数点前带或不带数字)
用于制作?
或+
选项-
用于非捕获组?:
是转义字符\
- 下一个怎么样:
^-?(([1-9][0-9]*)|(0))(?:\.[0-9]+)?$
如果要允许使用“+”号,请选择下一个:
顺便说一句,这是一个测试和共享regexp的好网站。正则表达式必须满足以下要求:
[+-]?
[0-9]*
[.]
以避免反斜杠炎[0-9]*
[0-9]+
,并且可以使用交替这个模式有效吗:
[+-]?([0-9]*[.]?[0-9]+|[0-9]+[.]?[0-9]*)
?然而,我担心灾难性的回溯。为什么第二行不被认为有效?但是-34.34.34可能是一个无效的实数-34.34是在-34.34.34中查找实数的正则表达式的正确输出。因为-34.34.34不是一个实数。这同样适用于上一个例子。但在第二个测试中,数字格式异常:多个点!我没有转换成-34.34。对,所以它们是你的预期结果,而不是你的实际结果。你没有解释。查看我的答案。不清楚匹配的是“34”还是“.34”
问题在于您的正则表达式。您的正则表达式与后者不匹配,因此它将向前跳并匹配34
。您还应该说明为什么这样做效果更好:+
-operator匹配1-n个重复,而*
-运算符匹配0-n,因此它也不匹配任何数字。@AntP:regex接受+.55.55
,可能被OP拒绝。再次修改。记住,现在可能不必要地纠结了。你的RE不匹配1e9
…
^-?(([1-9][0-9]*)|(0))(?:\.[0-9]+)?$
^(-|\+)?(([1-9][0-9]*)|(0))(?:\.[0-9]+)?$