gpt4 book ai didi

regex - 正则表达式以逗号分隔的数字与可选的小数部分匹配

转载 作者:行者123 更新时间:2023-12-04 22:38:16 29 4
gpt4 key购买 nike

我有一个正则表达式,用于在给定的多行文本中将逗号分隔的数字与可选的两位十进制小数部分匹配。

/(?<=\s|^)\d{1,3}(,\d{3})*(\.\d{2})?(?=\s|$)/m

它成功匹配1,2,12.34,12,345.67等字符串。如何修改它,使其仅与小数部分(例如 .23)匹配数字?

编辑:只是为了澄清-我想修改正则表达式,使其与 1212.34.34匹配

我正在寻找“独立”有效数字。即数字字符串,其边界为空白或行/字符串的开始/结尾。

最佳答案

这:

\d{1,3}(,\d{3})*(\.\d\d)?|\.\d\d

匹配以下所有数字:
1
12
.99
12.34
12,345.67
999,999,999,999,999.99

如果要 排除数字,例如 123a(例如街道地址)或 123.123(小数点后两位以上的数字),请尝试:
(?<=\s|^)(\d{1,3}(,\d{3})*(\.\d\d)?|\.\d\d)(?=\s|$)

一个小演示(我猜您正在使用PHP):
$text = "666a 1 fd 12 dfsa .99 fds 12.34 dfs 12,345.67 er 666.666 er 999,999,999,999,999.99";
$number_regex = "/(?<=\s|^)(?:\d{1,3}(?:,\d{3})*(?:\.\d\d)?|\.\d\d)(?=\s|$)/";
if(preg_match_all($number_regex, $text, $matches)) {
print_r($matches);
}

将输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 12
[2] => .99
[3] => 12.34
[4] => 12,345.67
[5] => 999,999,999,999,999.99
)

)

请注意,它会忽略字符串 666a666.666

关于regex - 正则表达式以逗号分隔的数字与可选的小数部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com