Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x 字符类正则表达式Python_Python 3.x - Fatal编程技术网

Python 3.x 字符类正则表达式Python

Python 3.x 字符类正则表达式Python,python-3.x,Python 3.x,我只是想知道为什么我们不能在一个字符类中包含字符类?例如,如下所示,我需要排除所有以0开头的数字,但不是0本身 但是,方括号中的方括号无效:[[]] string=re.findall'^[+?[1-9][0-9]+?]+$','01+2' 为什么呢?我们能做像上面这样的表达不是更容易吗 非常感谢! Erik不能在像[[0-5]]这样的字符类中使用数字范围。一些正则表达式引擎、工具和语言支持我们可以指定[[:digit:][:punct:][]的地方。但Python不是这样 要排除所有以0开头但

我只是想知道为什么我们不能在一个字符类中包含字符类?例如,如下所示,我需要排除所有以0开头的数字,但不是0本身

但是,方括号中的方括号无效:[[]]

string=re.findall'^[+?[1-9][0-9]+?]+$','01+2'

为什么呢?我们能做像上面这样的表达不是更容易吗

非常感谢! Erik

不能在像[[0-5]]这样的字符类中使用数字范围。一些正则表达式引擎、工具和语言支持我们可以指定[[:digit:][:punct:][]的地方。但Python不是这样

要排除所有以0开头但不是0本身的数字,请使用以下方法:

s = '01 2 0 33 789 005 4 08 7'
filtered = re.findall(r'\b([1-9]+|0)\b', s)

print(filtered)
输出:

['2', '0', '33', '789', '4', '7']

以下是我所做的:

string=re.findall'^[++?1-9d++?]+$','01+'

在这种情况下,它不会将0捕获为单个数字,因为

谢谢!
埃里克

谢谢你,罗曼!那是一个漂亮的表达!只是想知道我是否只想包括“+”和不以0开头的数字,但可以用0本身,我想用class和class来处理会更容易,我没有其他方法可以想到这些。。。。例如“10++”,这不会捕获类似304的内容。更好的模式可能是r'\b[1-9]\d+|0\b'