• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python 正则表达式 反斜杠(/)的麻烦和陷阱
    要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四个"\\\\",完美匹配。
    复制代码 代码如下:

    import re
    re_str_patt = "\\\\"
    reObj = re.compile(re_str_patt)
    str_test = "abc\\cd\\hh"
    print reObj.findall(str_test)


    输出:['\\', '\\']

    这里要这么理解,首先第一重转换是字符串自身的转义,那么"\\\\",实际上就是表示两个反斜杠(两个字符),然后传入正则表达式解析器,因为反斜杠依然是转义字符,那么进行第二重转换,两个反斜杠就代表一个反斜杠,所以就能和一个反斜杠进行匹配了,那么匹配连续的两个反斜杠,写正则表达式时就要写8次"\"了,相当壮观,要匹配/d+(这个在正则表达式里面表示连续1一个以上的数字字符)这个字符串怎么写呢?
    复制代码 代码如下:

    import re
    re_str_patt = "\\\\d\\+"
    print re_str_patt
    reObj = re.compile(re_str_patt)
    print 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。
    您可能感兴趣的文章:
    • Python中正反斜杠(‘/’和‘\’)的意义与用法
    • 详解Python中的正斜杠与反斜杠
    • Python中的左斜杠、右斜杠(正斜杠和反斜杠)
    • Python字符串和正则表达式中的反斜杠(''\'')问题详解
    • python如何输出反斜杠
    • 使用Python解决Windows文件名非用反斜杠问题(python 小技巧)
    • Python3.6-MySql中插入文件路径,丢失反斜杠的解决方法
    • 解决Python正则表达式匹配反斜杠''''''''问题
    • python中的反斜杠问题深入讲解
    • 一篇文章搞懂Python反斜杠的相关问题
    上一篇:EditPlus 正则表达式替换字符串详解
    下一篇:利用正则表达式(只录入中文,数字,英文)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python 正则表达式 反斜杠(/)的麻烦和陷阱 python,正则,表达式,反,斜杠,