dreamweaver 正则表达式为属性值加上双引号_Python正则表达式(一)

7c031cdfe7bff074dfba97de48bc9932.png

Python正则表达式

正则表达式是处理字符串的强大工具,拥有独特的语法和独立的处理引擎。

我们在大文本中匹配字符串时,有些情况用str自带的函数(比如find, in)可能可以完成,有些情况会稍稍复杂一些(比如说找出所有“像邮箱”的字符串,所有和chinahadoop相关的句子),这个时候我们需要一个某种模式的工具,这个时候正则表达式就派上用场了。

说起来正则表达式效率上可能不如str自带的方法,但匹配功能实在强大太多。对啦,正则表达式不是Python独有的,如果已经在其他语言里使用过正则表达式,这里的说明只需要简单看一看就可以上手啦。

语法

正则表达书是一个包含众多语法的技能,相对于“闭卷考试”,大家一定也更喜欢“开卷考试”,这里我们为大家准备了一张python正则表达式速查表,一起来学习一下。

当你要匹配 一个/多个/任意个 数字/字母/非数字/非字母/某几个字符/任意字符,想要 贪婪/非贪婪 匹配,想要捕获匹配出来的 第一个/所有 内容的时候,记得这里有个小手册供你参考。

我们借助于http://regexr.com/ ,来快速带大家学习一下。

1035db0d9301eb50bd72511250672c22.png

验证工具

我们最喜爱的正则表达式在线验证工具之一是http://regexr.com/

可以帮助大家快速学习、练习和巩固,注意到左侧有一些功能列表,也包含很多有用的内容。

挑战与提升

对于做自然语言处理的同学而言,正则表达式是一个必备的技能,我曾经有半年写了大量的正则表达式,以至于同事间开玩笑说,只要是符合某种规律或者模式的串,肯定分分钟能匹配出来。

对于想练习正则表达式,或者短期内快速get复杂技能,or想挑战更复杂的正则表达式的同学们。 请戳正则表达式进阶练习

各位宝宝enjoy yourself

Python正则表达式

re模块

Python通过re模块提供对正则表达式的支持。

使用re的一般步骤是

  • 1.将正则表达式的字符串形式编译为Pattern实例
  • 2.使用Pattern实例处理文本并获得匹配结果(一个Match实例)
  • 3.使用Match实例获得信息,进行其他的操作。

In [1]:

# encoding: UTF-8
import re# 将正则表达式编译成Pattern对象
pattern = re.compile(r'hello.*!')# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = pattern.match('hello, AI职场技术分享! How are you?')if match:# 使用Match获得分组信息print match.group()
hello, AI职场技术分享!

re.compile(strPattern[, flag]):

这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。

第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。

当然,你也可以在regex字符串中指定模式,比如re.compile('pattern', re.I | re.M)等价于re.compile('(?im)pattern')

flag可选值有:

  • re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
  • re.M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
  • re.S(DOTALL): 点任意匹配模式,改变'.'的行为
  • re.L(LOCALE): 使预定字符类 w W b B s S 取决于当前区域设定
  • re.U(UNICODE): 使预定字符类 w W b B s S d D 取决于unicode定义的字符属性
  • re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的:

In [2]:

regex_1 = re.compile(r"""d +  # 数字部分.    # 小数点部分d *  # 小数的数字部分""", re.X)
regex_2 = re.compile(r"d+.d*")

Match

Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。

match属性:

  • string: 匹配时使用的文本。
  • re: 匹配时使用的Pattern对象。
  • pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
  • lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。

match方法:

  • group([group1, …]):
    获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
  • groups([default]):
    以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
  • groupdict([default]):
    返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
  • start([group]):
    返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
  • end([group]):
    返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
  • span([group]):
    返回(start(group), end(group))。
  • expand(template):
    将匹配到的分组代入template中然后返回。template中可以使用id或g、g引用分组,但不能使用编号0。id与g是等价的;但10将被认为是第10个分组,如果你想表达1之后是字符'0',只能使用g<1>0。

In [14]:

import re
m = re.match(r'(w+) (w+)(?P<sign>.*)', 'hello AI职场技术分享!')print "m.string:", m.string
print "m.re:", m.re
print "m.pos:", m.pos
print "m.endpos:", m.endpos
print "m.lastindex:", m.lastindex
print "m.lastgroup:", m.lastgroupprint "m.group(1,2):", m.group(1, 2)
print "m.groups():", m.groups()
print "m.groupdict():", m.groupdict()
print "m.start(2):", m.start(2)
print "m.end(2):", m.end(2)
print "m.span(2):", m.span(2)
print r"m.expand(r'2 13'):", m.expand(r'2 13')
m.string: hello AI职场技术分享!
m.re: <_sre.SRE_Pattern object at 0x10b111be0>
m.pos: 0
m.endpos: 18
m.lastindex: 3
m.lastgroup: sign
m.group(1,2): ('hello', 'hanxiaoyang')
m.groups(): ('hello', 'hanxiaoyang', '!')
m.groupdict(): {'sign': '!'}
m.start(2): 6
m.end(2): 17
m.span(2): (6, 17)
m.expand(r'2 13'): hanxiaoyang hello!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mapperscan注解_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解

原文作者&#xff1a;笑而抿之乎搭建SpringBoot环境&#xff0c;创建maven 项目后1&#xff0c;创建入口类&#xff1a;MapperScan(basePackages "com.baizhi.dao" ) //把dao层交给工厂管理SpringBootApplication//标识入口类的注解public class Applincation { …

Android插件丢失怎么办,Android studio推荐插件以及升级后插件丢失问题解决

1、android-butterknife-zeleznyandroid-butterknife-zelezny 是根据butterknife定制的一款插件&#xff0c;能够方便快速初始化&#xff0c;对于我来说是开发必备&#xff0c;本人也对此插件进行了一些优化&#xff0c;个人感觉用起来更爽 &#xff0c;博客地址&#xff1a;Bu…

软工团队 - 系统设计

软工团队 - 系统设计 修改完善需求规格说明书 针对栋哥在上周答辩中主要提到问题的相应改动 管理员层面没有在需求中得到很好的体现。没有手机号验证。那时候回答的比较含糊orz&#xff0c;所以在这里说明一下对此作出的解释和修改。 对于第一点&#xff0c;我们讨论的结果是至…

python decimal_python学习笔记一

1、~4不太明白、右移、左移整体移动添加零2、注意运算符&#xff0c;3、1<<5&716&704、set中的pop() 方法用于随机移除一个元素。字典中&#xff1a;list中5、Python dir() 函数dir()函数不带参数时&#xff0c;返回当前范围内的变量、方法和定义的类型列表&…

java基础基础总结----- Date

前言&#xff1a;其实在学习这个的时候&#xff0c;自我感觉学到什么直接查询API就可以了&#xff0c;没有必要再去研究某个方法怎么使用&#xff0c; 重点学习一下经常用到的方法。感觉自己的写的博客&#xff0c;就跟自己的笔记一样&#xff0c;用的是时候&#xff0c;就能快…

pandas object转float_Pandas中文官档~基础用法6

呆鸟云&#xff1a;“这一系列长篇终于连载完了&#xff0c;还请大家关注 Python 大咖谈&#xff0c;这里专注 Python 数据分析&#xff0c;后期呆鸟还会给大家分享更多 Pandas 好文。”数据类型大多数情况下&#xff0c;pandas 使用 Numpy 数组、Series 或 DataFrame 里某列的…

android studio 拉取分支,AndroidStudio中使用Git-高级篇(二)——新建分支(branch)和拉取请求(Pull request)...

前段时间写过一篇文章介绍如何在AndroidStudio使用上传项目到github&#xff0c;今天接着给大家带来了他的高级篇——新建分支(branch)和拉取请求(Pull request)。在真正的开发中我们很少写完代码commit后直接push代码上去&#xff0c;因为这样做没有经过第二个人的审核&#x…

collection转换为list_JAVA 集合 接口继承关系和实现,List,Set,Map(总结)

一. JAVA 集合1.接口继承关系和实现集合类存放于 Java.util 包中&#xff0c;主要有 3 种&#xff1a;set(集&#xff09;、list(列表包含 Queue&#xff09;和 map(映射)。1. Collection&#xff1a;Collection 是集合 List、Set、Queue 的最基本的接口。2. Iterator&#xff…

lazarus开发android应用程序指南,Lazarus开发Android应用程序指南(2)

本指南版权由delphicn所有&#xff0c;QQ&#xff1a;1339838080(tom)&#xff0c;转载请保留版权信息。文中难免有错&#xff0c;欢迎指正。2&#xff0e;编译运行lazarus中的Android示例程序。lazarus安装包中自带示例是在lazarus/examples/androidlcl/androidlcltest.lpi 。…

plsqldevelop安装教程

一、下载并解压压缩包&#xff0c;解压后有如下文件&#xff1a; 二、运行PLSQL Developer10.0.5.1710.exe文件&#xff0c;可以修改文件安装路径&#xff0c;然后一直下一步下一步就可以了; 三、运行软件汉化包PLSQL Developer10.0.5.1710_CHS.exe&#xff0c;不用管一直下一步…

java优先队列_Java高级特性增强-多线程

请戳GitHub原文: https://github.com/wangzhiwubigdata/God-Of-BigData大数据成神之路系列&#xff1a;请戳GitHub原文: https://github.com/wangzhiwubigdata/God-Of-BigDataJava高级特性增强-集合Java高级特性增强-多线程Java高级特性增强-SynchronizedJava高级特性增强-vola…

理解JS的6种继承方式

【转】重新理解JS的6种继承方式 写在前面 一直不喜欢JS的OOP&#xff0c;在学习阶段好像也用不到&#xff0c;总觉得JS的OOP不伦不类的&#xff0c;可能是因为先接触了Java&#xff0c;所以对JS的OO部分有些抵触。 偏见归偏见&#xff0c;既然面试官问到了JS的OOP&#xff0c;那…

android 滚动列表框,建立滚动列表框

另一个可代替一组单选按钮及复选框的是滚动列表框(见图6.9)。使用滚动列表框&#xff0c;你可以建立一个选项列表&#xff0c;用户可以从中选择一个或多个选项。你可以使用建立下拉式列表框的标识符来建立一个滚动列表框&#xff0c;只是使用不同的属性。下面是个例子&#xff…

collection集合 多少钱_面试必备-Java集合框架

Java集合框架面试题常见集合集合可以看作是一种容器&#xff0c;用来存储对象信息。 数组和集合的区别&#xff1a; &#xff08;1&#xff09;数组长度不可变化而且无法保存具有映射关系的数据&#xff1b;集合类用于保存数量不确定的数据&#xff0c;以及保存具有映射关系的数…

html鼠标滚动图片折叠,鼠标滑过图片3D折叠效果

本教程我们将使用CSS3 3D transforms和jQuery来制作一个神奇的3D折叠效果。在我们的demo中&#xff0c;图片在鼠标滑过的时候被折叠&#xff0c;空出来的部分将显示图片的一些信息。我们将创建一个放置图片html结构&#xff0c;当鼠标滑过它时&#xff0c;使用jQuery来将折叠或…

微信小程序开发之普通链接二维码

本文主要介绍扫普通链接二维码打开小程序&#xff0c; 详情请看官方文档https://mp.weixin.qq.com/debug/wxadoc/introduction/qrcode.html 配置普通链接二维码规则 生成二维码 访问https://cli.im/url&#xff0c;将https://test.com/linkcode?id1_2生成二维码图片 小程序接收…

html checked属性值,HTML复选框的checked属性的值是多少?

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;我们都知道如何在HTML中构成复选框输入&#xff1a;我不知道 - 选中复选框的技术上正确的值是多少&#xff1f;我已经看到了这些工作&#xff1a;答案是无关紧要的…

3位水仙花数计算pythonoj_Python解答蓝桥杯省赛真题之从入门到真题

若发现此文章消失&#xff0c;则是在等待审核中&#xff0c;稍等一会儿即可显示&#xff0c;谢谢。 另外&#xff0c;我会尽量晚上上传更新题目。 此文章太长了&#xff0c;导致MD编辑器很卡&#xff0c;另写了一篇接续 传送门 Python解答蓝桥杯省赛真题之从入门到真题 &#x…

uniapp怎么解析html字符串,uniapp富文本解析插件的详细使用教程

如果你作为文章资源类或者博客类的小程序你就会发现&#xff0c;很多时候你的文章数据都是html格式或md格式&#xff0c;这样如果不经过处理&#xff0c;会非常难看&#xff0c;所以富文本解析就显得格外重要了&#xff0c;今天给大家写一个uniapp怎么使用富文本解析插件的教程…

c++和python有联系吗_Python和C++交互

关键字&#xff1a;Python 2.7&#xff0c;VS 2010&#xff0c;swig OS&#xff1a;Win8.1 with update。 1.下载swig&#xff1a;http://www.swig.org/download.html 2.将swig的路径添加到环境变量Path&#xff0c;例如set pathC:\swigwin-3.0.2。 3.用VS创建一个win32 consol…