Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 - Fatal编程技术网

Java 正则表达式来匹配这些数字规则

Java 正则表达式来匹配这些数字规则,java,regex,Java,Regex,在Java中,我目前正在使用 str.matches("\\d") 但它只匹配一个数字 我需要匹配整数和双打,例如: "1" "1337" ".1" "13.7" 任何帮助都会很棒。您可以尝试以下正则表达式: ^(\d+(\.\d+)?|\.\d+)$ 我认为这个正则表达式可以帮助你 \\d*\\.?\\d+ 这将匹配正整数和负整数,以数字开头的双精度,以及以点开头的双精度,这是一个非常广泛的问题 有关匹配多个字符的信息,您应该阅读有关的部分。我认为这比其他建议看起来更整洁,同时仍在做

在Java中,我目前正在使用

str.matches("\\d")
但它只匹配一个数字

我需要匹配整数和双打,例如:

"1"
"1337"
".1"
"13.7"

任何帮助都会很棒。

您可以尝试以下正则表达式:

 ^(\d+(\.\d+)?|\.\d+)$

我认为这个正则表达式可以帮助你

\\d*\\.?\\d+

这将匹配正整数和负整数,以数字开头的双精度,以及以点开头的双精度,这是一个非常广泛的问题


有关匹配多个字符的信息,您应该阅读有关的部分。

我认为这比其他建议看起来更整洁,同时仍在做同样的事情


(\\d+)(\\)?\\d+

这将匹配Java编译器将识别的任何实数。要做到这一点,它还可以处理有符号数和指数。它处于
模式。COMMENTS
模式,因为我认为其他任何东西都是野蛮的

(?xi)                      # the /i is for the exponent
(?:[+-]?)                  # the sign is optional
(?:(?=[.]?[0123456789])
   (?:[0123456789]*)
   (?:(?:[.])
      (?:[0123456789]{0,})
   ) ?
)
# this is where the exponent starts, if you want it
(?:(?:[E])
   (?:(?:[+-]?)
      (?:[0123456789]+)
   ) 
   |
)

这是您可能想告诉我们的某个特定编程语言的一部分吗?Java-很抱歉。您还想要负数(“-1.734”)?指数型(“12.34e-56”)怎么样?另外,您是否希望匹配整个字符串@gintas给出了一个很好的基本答案,但它假设输入在搜索输入的开始和结束处由“^”和“$”限定,如果您愿意,这很好,但如果您不愿意,则不太好。这或@gnomed取决于您是否希望约束以精确匹配完整字符串(即“^”和“$”)我现在更喜欢@Franco的mod了。我不知道为什么gintas有外部捕获,但我认为内部捕获实际上是对量词进行分组。只有双反斜杠而不是单反斜杠。@AndrewLogvinov不,在正则表达式中使用单反斜杠。就目前而言,他写的是正确的。您正在考虑如何通过Java编译器来弥补Java对正则表达式的无知ᵗ-类citizens。正如前面的回答评论中提到的,在这种情况下,您需要单反斜杠而不是双反斜杠。但我会让你编辑而不是否决;-)OP将Java列为语言。提供一个他不需要修改的字符串有什么问题?好吧,我同意。我的错。这在
35上失败。
你知道。是的,但这不在他的示例输入中。我想我们需要澄清需求
(?xi)                      # the /i is for the exponent
(?:[+-]?)                  # the sign is optional
(?:(?=[.]?[0123456789])
   (?:[0123456789]*)
   (?:(?:[.])
      (?:[0123456789]{0,})
   ) ?
)
# this is where the exponent starts, if you want it
(?:(?:[E])
   (?:(?:[+-]?)
      (?:[0123456789]+)
   ) 
   |
)