wyq 2020-11-11
关于正则表达式raw的\匹配规则
这是我在学习中获得到的一个例子,第一表达式中匹配到的是none。于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是none。
为了验证这个问题,我做了如下的实验:
那为什么一个会出现这样的结果呢,在正则表达式中,需要查找的字符串,会进行两次转义,先是传入的字符串进行第一层转换,例如:\\t --> \t .然后传到re解析器里进行第二层转换,\t -->tab键。而需要匹配的字符串\\\t -->两个反斜杠会变成一个反斜杠(因为前面那个\会转义后面的\,所以两个\就会变成一个\)。然后就变成\\t了,然后就变成直接的一个tab键,他们就匹配上了。
当出现raw时,如下:
原来可以匹配的就变得不能匹配了,为什么呢,因为使用了raw之后原本会进行的第一层转换,就不再存在了,直接进入re解析器中进行第二层转换:
例如:\\tsanle -->只进行一次转换就变成了\tsanle.然而需要匹配的字符串还是进行之前的转换,就一个tab,他们就无法匹配上了。
以上就是我所理解的,如有疑惑,可以私信提问。这就是我所理解的正则规则