Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 为什么re.findall()在本例中返回空列表,而在另一例中返回带有空字符串的列表?_Python_Regex - Fatal编程技术网

Python 为什么re.findall()在本例中返回空列表,而在另一例中返回带有空字符串的列表?

Python 为什么re.findall()在本例中返回空列表,而在另一例中返回带有空字符串的列表?,python,regex,Python,Regex,re.findall(r'[^-](*)$,'---')返回一个空列表[] 同时,re.findall(r'[^-](*)$,'----343')返回一个带有空字符串的列表[''] 这两种情况都不匹配。为什么re.findall()在第一种情况下返回一个空列表,而在第二种情况下返回一个空字符串的列表?$与该行的结尾匹配,该行没有字符。在第一种情况下,没有匹配项,因为行尾前面有一个破折号(-),您已经用[^-]对其进行了否定。在第二行中,行尾前面有一个与正则表达式匹配的非破折号字符。之所以这样做,

re.findall(r'[^-](*)$,'---')
返回一个空列表
[]

同时,
re.findall(r'[^-](*)$,'----343')
返回一个带有空字符串的列表
['']


这两种情况都不匹配。为什么re.findall()在第一种情况下返回一个空列表,而在第二种情况下返回一个空字符串的列表?

$
与该行的结尾匹配,该行没有字符。在第一种情况下,没有匹配项,因为行尾前面有一个破折号(
-
),您已经用
[^-]
对其进行了否定。在第二行中,行尾前面有一个与正则表达式匹配的非破折号字符。

之所以这样做,是因为当你说
(*)
时,只要这些连字符跟在一个非
-
的字符后面,你就匹配了零次或多次出现的
-
。在第一个示例中,没有非
-
的字符,因此没有匹配的字符,因此为空列表。在第二个示例中,有三个字符(数字)不是连字符,因此
(*)
与最后一个
3
匹配,然后
-
的出现次数为零