正则表达式中两个反斜杠的匹配规则详解

关于正则表达式raw的\匹配规则

这是我在学习中获得到的一个例子,第一表达式中匹配到的是none。于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是none。
为了验证这个问题,我做了如下的实验:

那为什么一个会出现这样的结果呢,在正则表达式中,需要查找的字符串,会进行两次转义,先是传入的字符串进行第一层转换,例如:\\t --> \t .然后传到re解析器里进行第二层转换,\t -->tab键。而需要匹配的字符串\\\t -->两个反斜杠会变成一个反斜杠(因为前面那个\会转义后面的\,所以两个\就会变成一个\)。然后就变成\\t了,然后就变成直接的一个tab键,他们就匹配上了。
当出现raw时,如下:

原来可以匹配的就变得不能匹配了,为什么呢,因为使用了raw之后原本会进行的第一层转换,就不再存在了,直接进入re解析器中进行第二层转换:
例如:\\tsanle -->只进行一次转换就变成了\tsanle.然而需要匹配的字符串还是进行之前的转换,就一个tab,他们就无法匹配上了。
以上就是我所理解的,如有疑惑,可以私信提问。这就是我所理解的正则规则

到此这篇关于正则表达式中两个反斜杠的匹配规则详解的文章就介绍到这了,更多相关正则表达式反斜杠内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Python正则表达式匹配反斜杠''\''问题

    在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即"\")? 一.引入 在学习了Python特殊字符和原始字符串之后,我觉得答案应该是这样的: 1)普通字符串:'\\' 2)原始字符串:r'\' 但事实上在提取诸如"3\8"反斜杠之前的数字时,我屡次碰壁,始终得不到结果.最终发现自己理解错了,原来原始字符串和"正则转义"没有一点关系:下面详细谈一谈. 二.字符串转义 反斜杠,在Python中比较特殊,就是它可以用来构

  • Python字符串和正则表达式中的反斜杠('\')问题详解

    在Python普通字符串中 在Python中,我们用'\'来转义某些普通字符,使其成为特殊字符,比如 In [1]: print('abc\ndef') # '\n'具有换行的作用 abc defg In [2]: print('abc\tdef') # '\t'具有制位符的作用 abc defg 我们还可以用'\'来转义特殊字符,使其成为普通字符,比如 In [3]: print('abc\\tdef') # 使'\'成为一个普通的字符,没有转义作用 abc\tdef In [4]: prin

  • python正则表达式 匹配反斜杠的操作方法

    python正则表达式 匹配反斜杠 正则 需要把原始字符串不被转义的条件下传递给正则模块,正则再去转义. r表示r后面的字符串为原始字符串,防止计算机将 \ 理解为转义字符. r'^\\$' 首先按照原始字符串给到compile函数 ,正则再把r'^\\$'中的\`翻译成\ backslash='\\' print(backslash) regular_backslash=re.compile(r'^\\$') print(regular_backslash.search(regular_bac

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

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

  • 正则表达式中两个反斜杠的匹配规则详解

    关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是none. 为了验证这个问题,我做了如下的实验: 那为什么一个会出现这样的结果呢,在正则表达式中,需要查找的字符串,会进行两次转义,先是传入的字符串进行第一层转换,例如:\\t --> \t .然后传到re解析器里进行第二层转换,\t -->tab键.而需要匹配的字符串\\\t -->两个反斜

  • 关于通过Java连接mysql对反斜杠”\“转义的测试详解

    前言 在java中,反斜杠"\"转义是"\",因此表示一个"\"要使用"\\",如果是正则表达式,那么表示一个"\"需要用"\\\\",在mysql中,反斜杠转义依然是"\",和java相同. 现在问题是:如果mysql中一个字段的内容包含反斜杠,然后通过java连接mysql去筛选这个字段所在的条目,要怎么写才能将该字段筛选出来呢?下面就是一个实验: 1,先建立测试

  • 对pandas中两种数据类型Series和DataFrame的区别详解

    1. Series相当于数组numpy.array类似 s1=pd.Series([1,2,4,6,7,2]) s2=pd.Series([4,3,1,57,8],index=['a','b','c','d','e']) print s2 obj1=s2.values # print obj1 obj2=s2.index # print obj2 # print s2[s2>4] # print s2['b'] 1.Series 它是有索引,如果我们未指定索引,则是以数字自动生成. 下面是一些例

  • 老生常谈java路径中的反斜杠和斜杠的区别

    JAVA中的斜杠 有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为"/":反斜杠的符号为"\". 斜杠(/)在JAVA中没有什么特别的意义,就是代表一个字符'/'; 反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如"\n"(换行)."\""(字符'"')等,所以在字符串中要表示字符'\'要用"\\"来表示,例:如果你这样定义一个字符串String s = "nam

  • Java中转义字符反斜杠\的代替方法及repalceAll内涵解析

    一.需求 现有一个字符串str String str = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\\":\\\"123456\\\"}"; System.out.println("str = " + str); 在控制台的输出为: str = {\"name\":\"spy\",\"id\":\&

  • python使用正则表达式匹配反斜杠\遇到的问题

    目录 遇到的问题: 正则表达式 python字符串 综上 字符串方法replace() 总结 遇到的问题: 在做爬虫的时候,爬取的url链接内还有转义字符,反斜杠 \,打算用正则的re.sub()替换掉的时候遇到了问题,这是要做替换的字符串 最开始直接写 re.sub("\\","",item) 编译器漏红了 然后就是找解决办法,最后发现要用四个反斜杠才可以,也就是使用 re.sub("\\\\","",item) 查了查资料

  • PHP在引号前面添加反斜杠(PHP去除反斜杠)

    一般空间商提供的服务器空间默认PHP 指令 magic_quotes_gpc是on的,也就是打开的.这时候就可以用stripslashes() 函数删除自动添加的反斜杠.用法就是:比如包含字符串的变量是$str,那么就用stripslashes() 函数处理一下这个字符串:stripslashes($str),输出的结果就是去掉反斜杠的. 如果遇到输出的结果中包含反斜杠的,可对输出内容用stripslashes()函数处理一下,即$str=stripslashes($str),保存即可将输出内容

  • php输出反斜杠的实例方法

    按常规写法,我们要输出反斜杠,那就在输出字符串里直接写上反斜杠的符号,但这样可以吗?我们尽管试一下. 运行这个代码的页面,发现页面报错了,报的是语法错误. 为什么会这样,从php文档里我们可以看到,这个反斜杠在字符串中是有特殊意义的,它其实是一个转义字符. 所以我们要输出这个反斜杠,就需要再加上一个反斜杠才行,第一个反斜杠是转义用的,第二个反斜杠才是真实的输出字符串. 再次运行上面的代码,可以看到没有报错了,而且能正确输出反斜杠字符了. 那如果要输出两个反斜杠字符呢?我们就需要写上四个反斜杠符号

随机推荐