python中的正则表达式混乱
如果我将变量a设置为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 = "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这是很有可能的,那么对于*,如果变量中的任意位置有逗号或下划线,它将不会打印,但如果没有*,正则表达式将解释[^,]因为字符串的最后部分不应包含逗号或下划线