正则表达式中关于对原生字符串的简单理解_正则表达式

来源:脚本之家  责任编辑:小易  

在正则表达式中,有些字符是有特殊意义的字符。因此如果想要匹配这些字符,那么就必须使用反斜杠进行转义。比如$代表的是以...结尾,如果想要匹配$,那么就必须使用\$。示例代码如下:

text = "apple price is \$99,orange paice is $88"
ret = re.search('\$(\d+)',text)
print(ret.group())
>> $99

原生字符串:

在正则表达式中,\是专门用来做转义的。在Python中\也是用来做转义的。因此如果想要在普通的字符串中匹配出\,那么要给出四个\。示例代码如下:

text = "apple \c"
ret = re.search('\\\\c',text)
print(ret.group())

因此要使用原生字符串(r标记)就可以解决这个问题:

text = "apple \c"
ret = re.search(r'\\c',text)
print(ret.group())

那么原理是什么呢?为什么在不使用r来标记原生字符串的时候需要四个\呢?使用r的时候需要两个\呢?

我们需要先来了解一下正则表达式的一个匹配过程,例如 ret = re.search('\\\\c',text) 这句代码:我们都知道 \ 字符无论是在python中还是正则表达式中都表示转义字符,这句代码 首先python将其解释成 \\c(第一个和第三个\分别表示转义,那么第二个和第四个表示普通字符\,最终即成为了\\c),接下来正则表达式拿到\\c后第一个\表示转义,因此将最后解释为普通的 \c 两个字符,再去匹配的文本里比较。而使用r来标记原生字符串后,python默认解释其为\\c三个字符,最后交由正则表达式再经过转义后即普通的\c两个字符。 

原生字符串这里比较绕,希望对大家有所帮助

补充:在正则表达式的使用过程中,有个小小的疑问r‘’ ,代表什么意思?

其实在《python基础教程》中,作者已经进行了详细的说明。

加入要匹配字符串‘python.org’,可以直接使用‘python.org’ 吗?当然是可以的,但是不要忘记 “.” 代表通配符,此时也与‘pythonaorg’匹配。

怎么让'.'不代表统配符呢?只要加上‘\’即可,但是为了表示模块re要求的单个反斜杠,需要再字符串中加入两个反斜杠,让解释器对其进行转义,(这里不太理解),作者解释为解释器执行的转义和模块re执行的转义。

如果厌烦了两个反斜杠,只需使用r'python\.org' 

总结

到此这篇关于正则表达式中关于对原生字符串的文章就介绍到这了,更多相关正则表达式原生字符串内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:正确使用带有"g"标记的javascript正则表达式javascript正则表达式标记中/g /i /m的用法,以及实例正则表达式匹配不包含某些字符串的技巧正则表达式截取字符串的方法技巧

  • 本文相关:
  • 正则表达式提取网址、标题、图片等一例(.net asp javascript/js)的实现
  • php匹配网址的正则 几乎可以匹配任何网址
  • js正则表达式验证url函数代码(方便多个正则对比)
  • 正则表达式截取身份证号码加密的方法
  • 浅析golang 正则表达式
  • 正则限制文本输入
  • coolcode转syntaxhighlighter与mysql正则表达式实现分析
  • php半小时精通正则表达式
  • 常用的正则表达式集锦
  • 匹配url的正则表达式(推荐)
  • 正则表达式 匹配多个字符串 如:匹配字符串中包含aa,同时还包...
  • 如何用正则表达式提取字符串中的汉字?
  • Python怎么用正则表达式提取字符串中的数字和子字符串?
  • 使用正则表达式exec获取字符串中的汉字?
  • js中的正则表达式怎样将一个字符串以$$、||、分隔开?
  • 正则表达式求判断字符串是否是小于8位纯数字
  • js中用正则表达式替换字符串中的数字
  • 关于正则表达式一次匹配所有特征字符串的问题,高手请进?
  • java正则表达式如何获取字符串中所有匹配内容
  • java使用正则表达式替换字符串
  • 关于正则表达式分割字符串
  • python 正则表达式 我想找到字符串中成对匹配的数据 请指教
  • 正则表达式——关于搜索多个字符串
  • 正则表达式 把字符串中成对的中括号替换成小括号
  • JS使用正则表达式除去字符串中重复字符的方法
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页正确使用带有"g"标记的javascript正则表达式javascript正则表达式标记中/g /i /m的用法,以及实例正则表达式匹配不包含某些字符串的技巧正则表达式截取字符串的方法技巧正则表达式提取网址、标题、图片等一例(.net asp javascript/js)的实现php匹配网址的正则 几乎可以匹配任何网址js正则表达式验证url函数代码(方便多个正则对比)正则表达式截取身份证号码加密的方法浅析golang 正则表达式正则限制文本输入coolcode转syntaxhighlighter与mysql正则表达式实现分析php半小时精通正则表达式常用的正则表达式集锦匹配url的正则表达式(推荐)最新手机号码、电话号码正则表达式正则表达式匹配不包含某些字符串的技巧正则表达式匹配任意字符(包括换行符)的写法比较正宗的验证邮箱的正则表达式js代码详解java 正则表达式详解js利用正则配合replace替换指定字符javascript 手机号码正则表达式验证函数正则表达式 \w \d 的意义正则中需要转义的特殊字符小结php preg_replace() 正则替换所有符合条件的常用的正则表达式集锦根据身份证号码计算出生日期、年龄、性别(18位) 根据入职时间计算工龄。js正则表达式常用函数详解php 正则表达式学习笔记自动识别html的标记 替换连接日常收集js邮箱验证正则表达式用正则实现提取代码内容的代码解决正则表示式匹配($regex)引起的一次mongo数据库cpu占用率高的正则表达式实现将mm/dd/yyyy格式的日期转换为yyyy-mm-dd格式javascript 正则修正符
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved