之前总是搞不明白正则表达式中的反斜杠的问题。今天经过查阅资料终于搞明白了。

  其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中反斜杠会涉及到双重转换的问题。

要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四个"\\\\",完美匹配。

在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中正则表达式的反斜杠问题的更多相关文章

  1. [转载]Python正则表达式匹配反斜杠'\'问题

    转载自csdnblog:Python正则表达式匹配反斜杠'\'问题 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)? 一.引入 在学习了Python特殊字符和 ...

  2. Python: 正则表达式匹配反斜杠 "\"

    Python正则表达式匹配反斜杠 "\" eg: >>>a='w\w\w' 'w\\w\\w' #  打印出来的 "\\" 被转义成 一个反斜 ...

  3. Java正则中"\\\\"表示普通反斜杠

    Java中"\"用于转义字符,"\\"表示普通无转义功能的反斜杠. 如果将字符串当做正则表达式来解析,那么"\\"也有了特殊意义,它与其后的 ...

  4. 【python之路38】Python正则表达式匹配反斜杠“\”

    一.引入 在学习了Python特殊字符和原始字符串之后,我觉得答案应该是这样的: 1)普通字符串:'\\'2)原始字符串:r'\'但事实上在提取诸如“3\8”反斜杠之前的数字时,我屡次碰壁,始终得不到 ...

  5. JAVA正则表达式中如何匹配反斜杠 \

    有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...

  6. MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义

    问题描述:mysql中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了) 例:插入insert into tb('url') values('absc\eeee'); 结果数据库里的内容是 ...

  7. java中从含反斜杠路径截取文件名的方法

    例如:获取到的文件路径为C:\Documents and Settings\Leeo\My Documents\logo.gif现在想要取得图片的名称logo.gif,我们知道反斜杠“\”是转义字符, ...

  8. JS中处理单个反斜杠(即转义字符的处理)

    问题来源:在表单的<input>标签中对输入的字符串进行大写转换.一不小心输入了反斜杠 \ 如下图所示: 输入 chn\  的时候,在  IE8  下弹出一个js错误.(在实际的项目的表单 ...

  9. 在C++中怎么输入反斜杠“ \ ”

    在C++编程中有时就会遇到有些符号不能直接输入,像反斜杠“ \ ",如果直接输入会出现:错误的终止了宏调用的错误. 这时,我们就需要把这些符号转义一下, 例如: CString str = ...

随机推荐

  1. Java中的线程安全和非线程安全以及锁的几个知识点

    1. 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程不安全就是不提供 ...

  2. hdu5126 stars

    题目描述 题解: 和二维的比起来差不多. 但是这是四维偏序. 所以搞一下CDQ套CDQ. CDQ是维度a已经有序,按维度b排序,然后将维度c存入一维数据结构. 所以我们在第一层CDQ中分治处理,将合法 ...

  3. 不同子系统采用不同MySQL编码LATIN1和UTF8的兼容

    程序处理 这是一个历史遗留系统, 旧的系统是C++开发的, 插入数据的时候, 没有统一MYSQL各个层次(服务器, 数据库, 表, 列)的编码, 这个情况基本上是MYSQL的默认安装导致的, 实际的数 ...

  4. tornado框架基础10-websocket

    websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...

  5. uwsgs loading shared libraries: libicui18n.so.58 异常处理

    背景 想使用 ningx + uwsgi + flask 搭建 python 应用环境 Python使用的是anaconda3(pyhton 3.6) 依赖包安装完毕,但是执行 uwsgi 的时候出现 ...

  6. 【BZOJ 3555】 [Ctsc2014]企鹅QQ(哈希)

    Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...

  7. Python数据结构--搜索树

    ''' 二叉搜索树(BST)是一棵树,其所有节点都遵循下述属性 - 节点的左子树的键小于或等于其父节点的键. 节点的右子树的键大于其父节点的键. 因此,BST将其所有子树分成两部分; 左边的子树和右边 ...

  8. *lucene索引_的删除和更新

    [删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...

  9. shelve -- 用来持久化任意的Python对象

    这几天接触了Python中的shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具.当我们写程序的时候如果不想用关系数据库那么重量级的东东去存 ...

  10. sprintboot + mybaits + mysql + html5 + thymeleaf 个人笔记

    参考:https://github.com/daleiwang/moxi service @Mapper 与 @Select 等 @Mapper似乎是一个myBaits 注解,表示将java方法和sq ...