函数re.findall(), 让正则表达式匹配仅一个字符的字符串,为什么会匹配得到两个结果?
在交互式解释器中输入如下代码:
a = re.findall(‘(?<!h)’, ‘i’)
print(a)
运行结果为[‘’, ‘’],为什么?
关于 LearnKu
(?<!…)后视断定取非, 匹配当前位置之前不是
…的子串。类似正向后视断定,包含的匹配...必须是定长。由断定成功’…`后,字符串搜索开始的位置进行匹配。findall(pattern, string, flags=0)findall 会返回匹配捕获到的不重复结果集,对于有多个子匹配捕获会呈现以元组列表形式展现结果。
(?<!h)(换而言之
(?<!h)i可以匹配捕获的i是指其前一位不是h的字符i,若仅仅(?<!h)只是要求断定前面不能有h字符,但未明匹配获对象,这种情况下自然为空。最后一种情况
(?<!h)有断言(确定匹配点位置),但无匹配捕获对象, 换而言之被正则的源串有n个非h字符返回 n+1个",+1 是为全局正则结果为"