Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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
Python 限制正则表达式中的位数_Python_Regex - Fatal编程技术网

Python 限制正则表达式中的位数

Python 限制正则表达式中的位数,python,regex,Python,Regex,我有这样一个正则表达式: '(?:\$|сум)(\040)?(\d+)|(\d+)(\040)?(?:\$|сум)' 它匹配以下字符串: $23 23$ 1000сум сум1000 сум 1000 1000 сум 我想把这个正则表达式中的位数限制为8 我试过这个: '(?:\$|сум)(\040)?(\d{, 8})|(\d{, 8})(\040)?(?:\$|сум)' 它停止匹配任何东西 我做错了什么?尝试指定下限,如(\d{0,8}) 此外,一些正则表达式方言在{0,8

我有这样一个正则表达式:

'(?:\$|сум)(\040)?(\d+)|(\d+)(\040)?(?:\$|сум)'
它匹配以下字符串:

$23
23$
1000сум
сум1000
сум 1000
1000 сум
我想把这个正则表达式中的位数限制为8

我试过这个:

'(?:\$|сум)(\040)?(\d{, 8})|(\d{, 8})(\040)?(?:\$|сум)'
它停止匹配任何东西


我做错了什么?

尝试指定下限,如
(\d{0,8})


此外,一些正则表达式方言在
{0,8}
结构中不允许逗号后有空格。

您还需要设置一个下限

(?:\$|сум)(\040)?(\d{0,8})|(\d{0,8})(\040)?(?:\$|сум)
你可以看到一个

看看上面写着什么:

您可以使用将匹配1到8位数字的
{1,8}
限制量词。我看到必须至少有1个,因为您的原始正则表达式中有
+

^(?:(?:\$|сум)(\040)?(\d{1,8})|(\d{1,8})(\040)?(?:\$|сум))$

从:

语法为
{min,max}
,其中
min
为零或正整数 表示最小匹配数的数字,
max
是一个整数 等于或大于
min
,表示最大匹配数。 如果逗号存在,但省略了
max
,则 匹配是无限的。所以
{0,1}
相同,
{0,1}
*
相同, 而
{1,}
+
相同。省略逗号和max表示 引擎将令牌精确地重复
min

没有任何意义。引擎将按字面意思匹配它,因此您的正则表达式失败

使用


{}

中没有空格也指定下限

(?:\$\\\\\\\\\\)(\040)?(\d{1,8})(\d{1,8})(\040)?(?:\$\\\\\\\\\\\\\\\\)


这是可行的。

代码>{}有三种形式:

  • {N}
    固定时间
  • {M,}
    至少M次
  • {N,M}
    在N到M次之间
如果使用最后一个,则最小值是强制性的

将正则表达式更改为
\d{1,8}
以匹配一个数字的1到8倍


从1开始,因为你正在使用+这是
{1,}

的快捷方式。你试过
\d{0,8}
吗?@tobias_k是的,我试过。没有帮助。请看它没有帮助,因为逗号后面有空格。是的,空格是我真正的问题。谢谢你的回答。我在某个地方读到,即使{,8}也可以设置最大值。事实上,我甚至试过{1,8}。我的问题出在
{}
里面的一个空格里。谢谢:)我在某个地方读到,甚至{,8}都可以设置最大值。实际上我甚至试过{1,8}。我真正的问题是空格。谢谢你的回答:)事实上,我忘了谈论空白,但正如@vks已经声明的那样,我没有更新:)只是在开始时留下了我的答案,因为你正在使用1+
\d{, 8}
\d{0,8}