Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Regex 正则表达式与十进制字母匹配_Regex - Fatal编程技术网

Regex 正则表达式与十进制字母匹配

Regex 正则表达式与十进制字母匹配,regex,Regex,我有以下字符串3.14、123.56f、.123e5f、123D、1234、343E12、32。 我要做的是匹配上述输入的任意组合。到目前为止,我从以下几点开始: ^[0-9]\d*(\.\d+) 我意识到我必须逃避现实。因为它本身就是一个正则表达式 谢谢。可能吧 ^(\d+(\.\d+)?|\.\d+)([eE]\d+)?[fD]?$ 作为旁注,我已经使D与f之外的所有组件兼容 如果需要正号和负号,请在^后面添加[+-]? ^(\d+(\.\d+)?|\.\d+)([eE]\d+)?[f

我有以下字符串3.14、123.56f、.123e5f、123D、1234、343E12、32。 我要做的是匹配上述输入的任意组合。到目前为止,我从以下几点开始:

^[0-9]\d*(\.\d+)
我意识到我必须逃避现实。因为它本身就是一个正则表达式

谢谢。

可能吧

^(\d+(\.\d+)?|\.\d+)([eE]\d+)?[fD]?$

作为旁注,我已经使
D
f
之外的所有组件兼容

如果需要正号和负号,请在
^

后面添加
[+-]?

^(\d+(\.\d+)?|\.\d+)([eE]\d+)?[fD]?$

作为旁注,我已经使
D
f
之外的所有组件兼容


如果需要正号和负号,请在
^

之后添加
[+-]?
,这将匹配所有这些:

[0-9.]+(?:[Ee][0-9.]*)?[DdFf]?

请注意,在字符类(方括号)中,点
不是特殊字符,不应转义。

这将匹配所有这些字符:

[0-9.]+(?:[Ee][0-9.]*)?[DdFf]?
请注意,在字符类(方括号)中,点
不是特殊字符,不应转义。

您可以使用它进行测试,但这似乎适用于所有这些示例:

^\d*\.?(\d*[eE]?\d*)[fD]?$
您可以使用来测试它,但这似乎适用于所有这些示例:

^\d*\.?(\d*[eE]?\d*)[fD]?$
也许是那个

^\d*(?:\.\d+)?(?:[eE]\d+)?(?:[fD])?$

也许是那个

^\d*(?:\.\d+)?(?:[eE]\d+)?(?:[fD])?$


如果尚未提出,这也应该可行

try {
    Pattern regex = Pattern.compile("\\.?\\b[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?[fD]?\\b", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    Matcher regexMatcher = regex.matcher(subjectString);
    while (regexMatcher.find()) {
        // matched text: regexMatcher.group()
        // match start: regexMatcher.start()
        // match end: regexMatcher.end()
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

如果尚未提出,这也应该可行

try {
    Pattern regex = Pattern.compile("\\.?\\b[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?[fD]?\\b", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    Matcher regexMatcher = regex.matcher(subjectString);
    while (regexMatcher.find()) {
        // matched text: regexMatcher.group()
        // match start: regexMatcher.start()
        // match end: regexMatcher.end()
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

您使用正则表达式的语言是什么?您知道为什么有时使用
[0-9]
有时
\d
?尚不清楚
d
是什么以及它与哪些修饰符兼容。你能澄清一下上面输入的
是什么意思吗?@xanatos我实际上是想找出一个通用正则表达式,但主要是针对java和浮点数字常量的。你使用的是什么语言来自的正则表达式?您知道为什么有时使用
[0-9]
有时
\d
?尚不清楚
d
是什么以及它与哪些修饰符兼容。你能澄清一下上面输入的
是什么意思吗?@xanatos我实际上是想找出一个通用的正则表达式,但主要是针对java和浮点数字常量。是的,但是您使用了非捕获组,并且您的正则表达式将成功地获得空字符串(您有所有可选项)。使用正则表达式的每个人在之前或之后都会丢失!:-):-)这是唯一的硬道理。是的,但是您使用了非捕获组,并且您的正则表达式将成功地获得空字符串(您有所有选项)。使用正则表达式的每个人在之前或之后都会丢失!:-):-)这是唯一的硬道理。警告:正如上面的xanatos所指出的:这也适用于空字符串。警告:正如上面的xanatos所指出的:这也适用于空字符串。