【发布时间】:2011-05-18 03:13:11
【问题描述】:
我需要编写一个正则表达式,它将从示例文本中捕获以下所有数字:
2.5
5
0.2
.5
假设它在小数点两侧不超过 2 位,我使用什么正则表达式?
谢谢。
【问题讨论】:
标签: regex
我需要编写一个正则表达式,它将从示例文本中捕获以下所有数字:
2.5
5
0.2
.5
假设它在小数点两侧不超过 2 位,我使用什么正则表达式?
谢谢。
【问题讨论】:
标签: regex
这应该可行。
(\d*\.?\d+)
意思是
(开始捕获组\d* 任意数字零次或多次\.? 一个句点零次或一次(即它是可选的)\d+ 任意数字一次或多次)结束捕获组它将匹配您列出的所有号码并在$1 中捕获它们。
【讨论】:
$0获取整个正则表达式的匹配内容。
123.456,但 OP 希望小数点两侧不超过 2 位。
$0,因为我倾向于发现我通常只想捕获一部分正则表达式。
这个正则表达式可以完成这项工作(即小数点两侧不超过 2 位)
^(?:\d{0,2}\.\d{1,2})$|^\d{1,2}$
解释:
^ # Begining of the string
(?: # begining of NON capture group
\d{0,2} # matches 0,1 or 2 digits
\. # decimal point
\d{1,2} # 1 or 2 digits
) # end of non capture group
$ # end of string
| # OR
^ # Begining of the string
\d{1,2} # 1 or 2 digits
$ # end of string
这个正则表达式将匹配:
2.5, 5, 0.2, .5
但不是:
123.456, 256
【讨论】: