这里有多个帖子捕获了值,但我只是想看看值是不是什么东西。更模糊地说,我想了解检查一个值和“捕获”一个值之间的区别。在当前情况下,价值应为以下可接受的货币格式:
Here is a post这解释了一些关于money regex的事情,但我一点也不明白。
.50
50
50.00
50.0
$5000.00
$.50
我不想要逗号(人们应该知道这很荒谬)。
我遇到的麻烦是:
我现在的regex(显然不工作)是:
# I'm checking the Boolean of the following:
re.compile(r'^[\$][\d\.]$').search(value)
(注:我在Python中工作)
这也被称为“捕获”值;)
制作亚伦的基本示例:
然后金额(不带美元符号)将在捕获组1中。
这是一个你可以使用的正则表达式:
这是我用来测试的试验台。我包括了你所有的测试,还有我自己的一些。我还包括了一些负面的测试,因为确保它在不应该匹配的时候不匹配和确保它在应该匹配的时候匹配一样重要。
要获取不带$的值,可以使用捕获的组:
假设您希望允许
$5.
,但不允许5.
,则以下语言将被接受:需要理解的重要内容:
^
和$
分别只在输入字符串的开头和结尾匹配。\.
匹配文本点\$
匹配文本美元符号\$?
匹配美元符号或不匹配(即,可选美元符号)\d
匹配任何单个数字(0-9)\d*
匹配零个或多个数字的运行\d+
匹配一个或多个数字的运行\d{1,2}
匹配任何一个数字或两个数字的运行带括号的子模式是捕获组:与捕获组中的子表达式匹配的输入中的所有文本都将在
matchobj.group(index)
中可用。美元符号不会被捕获,因为它在括号外。因为Python不支持多个同名的捕获组(!!!)我们必须在
matchobj.groups()
中搜索不在None
中的那个。这也意味着您在修改模式以对除数量之外的每个组使用(?:...)
时必须小心。调整马克的测试套,我们得到
输出:
相关问题 更多 >
编程相关推荐