什么';在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

在Java中,什么是好的实数正则表达式

我创建了正则表达式
([-]?[\\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个或更多可选数字。试试
      [0-9]*
    • 可能有小数点。尝试
      [.]
      以避免反斜杠炎
    • 小数点后可能有0或更多数字。试试
      [0-9]*
    • 2和4中至少有一个有数字。这将使用
      [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]+)?$