Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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,如果我将变量a设置为 a = "6253625879615786" 如果我使用regex语句 print(re.findall(r'^[456][0-9]{15}[^,_]',a)) 我没有得到任何输出,但是如果我使用regex语句,将*结尾改为0或1次 print(re.findall(r'^[456][0-9]{15}[^,_]*',a)) 这是为什么?您的输入字符串长度为16个字符。模式1需要17个字符才能匹配,而第二个需要16个字符*表示0次或多次出现。Study

如果我将变量a设置为

a = "6253625879615786"
如果我使用regex语句

print(re.findall(r'^[456][0-9]{15}[^,_]',a))
我没有得到任何输出,但是如果我使用regex语句,将*结尾改为0或1次

print(re.findall(r'^[456][0-9]{15}[^,_]*',a))         

这是为什么?

您的输入字符串长度为16个字符。模式1需要17个字符才能匹配,而第二个需要16个字符<代码>*表示0次或多次出现。Study.
*
表示“任意”次数,包括0。但是如果在模式1中没有*,那么如果我试图省略那些^,并且u发生在字符串中而不是实际发生在字符串中,它怎么需要17个字符呢?第一个模式说它以一个不存在的字符结束,或者u这是很有可能的,那么对于*,如果变量中的任意位置有逗号或下划线,它将不会打印,但如果没有*,正则表达式将解释[^,]因为字符串的最后部分不应包含逗号或下划线