python正则表达式:python 正则表达式 反斜杠(/)的麻烦和陷阱来源: 发布时间:星期一, 2009年9月7日 浏览:30次 评论:0
要匹配串中1个反斜杠应该如何写正则表达式?"\\"这样行吗?试试就知道了re模块抛异常了"\\"就是个反斜杠对于正则表达式解析器来说是个转义但是后面啥也没有自然就报错了"\\\" 3个肯定是不行试试 4个"\\\\"完美匹配
复制代码 代码如下: import re re_str_patt = "\\\\" reObj = re.compile(re_str_patt) str_test = "abc\\cd\\hh" pr reObj.findall(str_test) 输出:['\\', '\\'] 这里要这么理解首先第重转换是串自身转义那么"\\\\"实际上就是表示两个反斜杠(两个)然后传入正则表达式解析器反斜杠依然是转义那么进行第 2重转换两个反斜杠就代表个反斜杠所以就能和个反斜杠进行匹配了那么匹配连续两个反斜杠写正则表达式时就要写8次"\"了相当壮观要匹配/d+(这个在正则表达式里面表示连续1个以上数字)这个串如何写呢? 复制代码 代码如下: import re re_str_patt = "\\\\d\\+" pr re_str_patt reObj = re.compile(re_str_patt) pr reObj.findall("\\d+") 写成re_str_patt = "\\\\d\+"也行\+对于串来说没有转义意义所以就当成个反斜杠了 在python中写正则表达式时用得最多是raw串原生串什么意思?就是只有重转换了没有串转换了只在正则表达式内部进行转换了这样匹配个反斜杠正则表达式可以这样写re_str_patt = r"\\"有人会想以后写windows文件路径什么方便了呵呵直接 path = r"c:\myforder\xx" 搞定是这句没有问题但是如果你写成 path = r"c:\myforder\xx\"直接报错了为什么?反斜杠虽然不作为转义了但是还是对它后面引号(包括单引号)有影响使这个引号不被视为串终止以为它后面还有但是实际没有因此会报错其实可以反过来想raw串里面要表示引号如何办呢?可以发现 path = r"\\123\"xxx" 是可以那用raw串岂不是有局限性?不过raw在设计的初就是用来支持正则表达式而在正则里面反斜杠是转义所以不可能出现在串末尾所以建议不要图方便在其他地方使用raw 0
相关文章读者评论发表评论 |