我正在尝试创建一个接受以下内容的正则表达式: 空字符串,单个整数或多个整数,用逗号分隔,但不能有逗号的开头和结尾。
我设法找到了这个,但我不能取消和如何删除数字限制
^\d{1,10}([,]\d{10})*$
答案 0 :(得分:35)
您发布的内容仍然需要至少1个整数,因此它与空字符串不匹配:
以下是您的需求:
^(\d+(,\d+)*)?$
阐释:
'?'
结束,以匹配空字符串。'\d+'.
这是一个或多个数字字符 ('0'-'9')
',\d+'
的括号,并在其后面加上星号。 Hench整个事情是either an empty string or start with an integer then repeat zero or more times a string which starts with a comma and ends with an integer
答案 1 :(得分:3)
{1,10}
和{10}
是范围。您可以将+
替换为无限正数。例如:
^\d+([,]\d+)*$
答案 2 :(得分:1)
尝试以下方法:
^(\d+(,\d+)*)?$
答案 3 :(得分:0)
其他一些答案之间用逗号隔开了4位数字。这是一个带有可选符号的细微变化,并在逗号之间强制使用3位数字:
^[+-]?(\d+(,\d{3})*)$
答案 4 :(得分:0)
我会通过将内部组设为非捕获组来扩展tster的答案。
^(\d+(?:,\d+)*)?$
例如考虑
re.search('^(\d+(?:,\d+)*)?$', "1,2,3,4").groups()
('1,2,3,4',)
返回1个元素的元组。但是,如果内部组是一个捕获组,那么最后会得到一个额外的元素。
re.search('^(\d+(,\d+)*)?$', "1,2,3,4").groups()
('1,2,3,4', ',4')