学Python正则表达式,这一篇就够了

Python011

学Python正则表达式,这一篇就够了,第1张

正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。

注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间。

re模块在Python中提供对Perl类正则表达式的完全支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。

在这篇文章中,将介绍两个重要的功能,用来处理正则表达式。 然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义。 为了在处理正则表达式时避免混淆,我们将使用:r'expression'原始字符串。

匹配单个字符的基本模式

编译标志可以修改正则表达式的某些方面。标志在re模块中有两个名称:一个很长的名称,如IGNORECASE,和一个简短的单字母形式,如。

1.match函数

函数尝试将RE模式与可选标志的字符串进行匹配。

下面是函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.match函数在成功时返回匹配对象,失败时返回None。使用match(num)或groups()函数匹配对象来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

2.search函数

此函数尝试将RE模式与可选标志的字符串进行匹配。

下面是这个函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.search函数在成功时返回匹配对象,否则返回None。使用match对象的group(num)或groups()函数来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

3.匹配与搜索

Python提供基于正则表达式的两种不同的原始操作:match检查仅匹配字符串的开头,而search检查字符串中任何位置的匹配(这是Perl默认情况下的匹配)。

示例

当执行上述代码时,会产生以下结果 :

4.搜索和替换

使用正则表达式re模块中的最重要的之一是sub。

模块

此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。

示例

当执行上述代码时,会产生以下结果 :

5.正则表达式修饰符:选项标志

正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面。 修饰符被指定为可选标志。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 :

6.正则表达模式

除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都与其自身匹配。 可以通过使用反斜杠将其转换为控制字符。

7.正则表达式示例

字符常量

字符类

特殊字符类

重复匹配

非贪婪重复

这匹配最小的重复次数 :

用圆括号分组

反向引用

这与以前匹配的组再次匹配 :

备择方案

python|perl : 匹配“python”或“perl”

rub(y|le) : 匹配 “ruby” 或 “ruble”

Python(!+|?) : “Python”后跟一个或多个! 还是一个?

锚点

这需要指定匹配位置。

带括号的特殊语法

开课吧广场-人才学习交流平台-开课吧

不下200种 可以在维基百科搜索List_of_programming_languages

百度贴不了wiki的地址,大概是垄断吧

A+BAT

A+

A++

A# .NET

A# (Axiom)

A-0

ABAP

ABC

ABC ALGOL

ABLE

ABSET

ABSYS

ACC

Accent

ActionScript

Ace DASL

ACT-III

Ada

APL

AWK

B

BACI

Baja

BASIC

bc

bcompile

BCPL

BeanShell

BETA

Bigwig

Big Snake

Bistro

BLISS

Blitz Basic

Block And List Manipulation (BALM)

Blue - Rejected prototype for Ada

Blue

Boo

Bourne shell - a.k.a sh

Bourne-Again shell - see Bash

Boxx

BPEL - Business Process Execution Language

Brainfuck

BUGSYS

BuildProfessional

BYOND

C

C--

C-script

C++ - ISO/IEC 14882

C# - ISO/IEC 23270

C shell (csh)

Caché ObjectScript - See also Caché Basic

Caml

Cat

Cayenne

C-BOT

Cecil

Cesil

Cg

Ch interpreter (C/C++ interpreter Ch)

Chapel

CHAIN

Charity

Chef

Chey

CHILL

CHIP-8

chomski

Chrome

ChucK

Cilk

CICS

CL

Clarion

Clean

Clipper

CLIST - Programming language for online applications in the MVS TSO environment

CLU

CMS-2

COBOL - ISO/IEC 1989

CobolScript

Cobra

CODE

ColdFusion

COMAL

Common Intermediate Language (CIL)

Common Lisp

Component Pascal

COMIT - List or string processing language

Concurrent Clean

Constraint Handling Rules

CORAL66

Corn

CorVision

COWSEL

CPL

CSP

Csound

Cue

Curl

Curry

Cyclone

D

Dao

DASL - Distributed Application Specification Language

DASL - Datapoint's Advanced Systems Language

DarkBASIC

DarkBASIC Professional

Dataflex

Datalog

dBASE

dc

Deesel (formerly G)

Delphi

Dialect

DinkC

DCL

Dialog Manager

DIBOL

DL/I

Dream Maker

Dylan

Dynace

E

Ease

EASY

Easy PL/I

EASYTRIEVE PLUS

eC (Ecere C)

ECMAScript

eDeveloper

Edinburgh IMP

Einstein

Eiffel

Elan

elastiC

Elf

Emacs Lisp

EGL Programming Language (EGL)

Epigram

Erlang

Escapade - server-side programming

Esterel

Euclid

Euphoria

Euler

EXEC

EXEC2

F

F#

Factor

Fan

Felix

Ferite

F#

FL

FLOW-MATIC

FOCAL

FOCUS

FOIL

FORMAC

Formula language

Forth

Fortran - ISO/IEC 1539

Fortress

FoxPro

FP

Frag Script

Franz Lisp

Frink

Frontier

F-Script

Gambas

G-code

General Algebraic Modeling System

Generic Java

Gibiane

G (LabVIEW)

Gödel

Godiva

GOTRAN (see IBM 1620)

GOTO++

GPSS

GraphTalk

GRASS

Green

Groovy

H - Business processing language from NCR.

HAL/S - Real-time aerospace programming language

HAScript

Haskell - An advanced functional programming language

HaXe - Open Source language which can compile to four different platforms, including PHP and Flash

HyperTalk

IBM Basic assembly language

IBM RPG

ICI

Icon

IDL

IMP

Inform

Information Processing Language (IPL)

Informix-4GL

Io

IPTSCRAE

Interactive System Productivity Facility

J

J#

J++

JADE

JAG

Jal

Janus

Java

JavaScript

Jim++

JCL

Join Java

JOSS

Joule

JOVIAL

Joy

JScript

JSP

J2EE

J2ME

K

KEE

Kiev

Korn Shell

KIF

Kite

Kogut

KRC

KRL

KRYPTON

L

LabVIEW

Lagoona

LANSA

Lasso

Lava

Leda

Lead

Leadwerks Script

Legoscript

Leopard

Lexico

Lfyre

Liberty BASIC

Limbo

Limnor

LINC

Lingo

Lisaac

Lisp - ISO/IEC 13816

Lite-C

Logo

LOLCODE

LPC

LSL

LSE

Lua

Lucid

Lush

Lustre

LYaPAS

LSL

M4

MAD

MADCAP

MAGIC - See eDeveloper

Magik

Magma

MapBasic

Maple

MAPPER (Unisys/Sperry) now part of BIS

M-A-R-E-K (Programming language)

MARK-IV (Sterling/Informatics) now VISION:BUILDER of CA

Mary

Mathematica

MATLAB

MATA

Maxima (see also Macsyma)

MaxScript internal language 3D Studio Max

Maya (MEL)

Multiprocessor C#

Mercury

Mesa

METAL

Michigan Algorithm Decoder see MAD programming language

Microcode

MicroScript

MillScript

MIMIC

Mindscript

Miranda

Miva

ML

Moby

MODCAP

Model 204 User Language

Modula

Modula-2

Modula-3

Mondrian

Mortran

Moto

MOUSE

MSIL - Deprecated name for Common Intermediate Language

MSL

MONO

MUMPS

Napier88

Natural

Nemerle

NESL

Net.Data

Neuralware

NewtonScript

NGL

Nial

NXT-G

Nice

Nickle

Nosica

NQC

Nu

o:XML

Oberon

Objective Modula-2

Object Lisp

ObjectLOGO

Object Pascal

Objective-C

Objective Caml

Obliq

Objectstar

ObjectView

Ocaml

occam

occam-π

Octave

OmniMark

Opal

Open programming language

OPS5

Organiser Programming Language (OPL) - cf. Psion Organiser

Oxygene

Oz

PARI/GP

Parser

Pascal - ISO 7185

Pawn

PBASIC

PCASTL

PEARL

Perl

Perl Data Language

PHP

Pico

Piet

Pike

PIKT

PILOT

Pizza

PL 11

PL/0

PL/8

PL/B

PL/C

PL/I - ISO 6160

PL/M

PL/P

PL/SQL

Plankalkül

PLD

PLEX

PLEXIL

Pliant

PNGlish

PPL

POP-11

Poplog

PORTRAN

PostScript

Ppc++

Processing

Prograph

Progress 4GL

Prolog

Turbo Prolog

Promela

Protheus

PRO-IV

Python

Q

Qi

QtScript

QuakeC

QPL

Quikcomp (for the Moonrobot XI)

R

R++ - Based on C++ and added semanteme description

Rascal

Ratfiv

Ratfor

RBScript

rc

REPL - Really Easy Programming Language

REBOL - Relative Expression Based Object Language

Red - Rejected prototype for Ada

Redcode

REDO

REFAL

Revolution

REXX

Rigal

Rlab

Robot Scripting Language (RSL)

RPG - Report Program Generator

RPL

RScript

Ruby

Russell Programming Language

REALBasic

S

S2

S-PLUS

S-Lang

SAIL

SAKO

SAM76

SAS

Sather

Scala

ScalPL

SCAR

SCATRAN

Scheme

Scilab

Script.NET

Sed

Seed7

Self

SETL

Shadow Programming Interface (Developing)

ShadowScript

Shift Script

SIGNAL

SiMPLE

SIMPOL

SIMSCRIPT

Simula

SISAL

Slate

SLIP

SMALL - SMALL Machine Algol Like Language

Small

Smalltalk

SNOBOL - String Oriented Symbolic Language

SPITBOL

Snowball

SPARK

Spice

SPIN

SP/k

SPL/1 - aka SPL/I

SPS (1620) - see IBM 1620

Squirrel

SR

SSL

Standard ML

StringLang

Subtext

SuperCollider

Suneido

SYMPL

SyncCharts

Synergy/DE

SystemVerilog

T

TACL

TACPOL

TagsMe

TADS

TIE

Transaction Application Language

Tcl

Transact-SQL

teco

TELCOMP

Telon

Tempo

thinBasic

Titanium

TI-Basic

Today

Tom

TOM

Topspeed - see Clarion

TorqueScript

tpu

Trac

Trine

TTCN

Turbo Pascal

Turing

TUTOR\

Tutorial D

TXL

Ubercode

Ultra 32

Unicon

Uniface

Unix shell

Unlambda

UnrealScript

Use

V

Vala

VDM++

VDM-SL

Verilog

VHDL

Visual Assembler

Visual Basic - Visual Beginners All-purpose Symbolic Instruction Code

Visual Basic .NET

Visual DataFlex

Visual DialogScript

Visual FoxPro

Visual J++

Visual Objects

VBScript

VX-REXX

Vvvv

Water

WATFOR - see WATFIV

WATFIV

WAXHTML

WebQL

Whitespace

Winbatch

WinDev

Windows PowerShell

X++

X10

Xbase++ 32Bit Windows language

XBL

xbScript - Also xBaseScript

xHarbour

XL

XOTcl

XPL

XPL0

XQuery

XSLT - See XPath

Y

YACC

YAFL

Yellow - Rejected prototype for Ada

Yorick

Y

Z++

Z notation - A program specification language, like UML.

Zonnon

ZOPL

ZPL

一、基本格调

即打开简历之后的第一印象。就好比我们看见一个人,会有一个整体的感觉,他是fashion的、小清新的还是老道的?有了第一印象之后再慢慢分解来看。

加分写法:

简洁明了,逻辑结构清晰。

字体,排版,顺畅,清晰整齐就好。

最好是PDF格式,兼容性强且不易乱序。

减分写法:

设计的过于浮夸或者过于简单的。(eg.有的简历五颜六色、非常酷炫,却半天找不到联系方式,抑或是只有个人基本信息和公司名称)

写了十几页,半天打不开的,或者加载了半天,打开还乱码。

二、基本信息(姓名/性别/毕业院校/电话/邮箱/居住地/期望地)

加分写法:

清晰罗列出以上信息,这样HR就不用在接下来的电话沟通或面试中再去追问这些内容,建立我们接下来电话沟通对你的熟悉度。

再额外能加上QQ或者微信就更好了(以防有时候电话打不通哦,时不时会遇到这种情况)

减分写法:

大部分的基本信息没有写

甩给我一个Github链接,极致简洁的几句描述,需要通过你的链接来找你的联系方式。(如果不是博客写的特别好,基本是要放弃你了)

三、工作经历&项目经历

加分写法:

工作经历项目经历可参照万能的STAR法则来写,STAR不清楚的童鞋点这里啦

效力过哪些公司,我们匹配的公司? BAT? 知名大型互联网公司?

做过什么行业领域,和我们目前的行业是否匹配

擅长的技术语言,应用了哪些技术栈,(Java, Scala,Ruby, React, Vue, Microservice…)

经历的项目复杂度,及在项目中承担什么样的角色(人的变化/技术的变化/环境的变化/不同工作经历相同角色的不同点)

时间节点(空档期)

减分写法:

看了半天,不知所云,没有任何亮点,没有让人有去和你聊一聊深扒的信息。

来几个栗子

栗子1错误打开方式:

XX(全栈工程师)2013.06 — 至今

参与需求分析及实现方案设计。

设计数据库表结构,实现后台功能及web页面展示。

产品线上部署及运维。

ay 配置管理工程师 2010.03 — 2013.03

负责公司产品性能测试,及线上数据分析

负责公司配置管理,环境维护等工作

点评:看不出来他做的什么事情,没有逻辑性,甚至不知道他做的什么技术语言。

栗子2正确打开方式:

西安XXX公司 Java工程师 — 2016.2月-2017.2月

1、MOGU推荐架构数据与缓存层设计开发

MOGU是一款时尚资讯app,负责推荐页面资讯feed流的展示及用户历史的展示

负责数据层,处理前端逻辑整个开发工作,分布式rpc服务搭建

负责进行压测监测、缓存处理,对接又进行改进优化,主用redis缓存

2、基于JAVA的电商爬虫开发

使用java搭建爬虫server平台,进行配置和开发,进行网页改版监测功能开发

爬取淘宝时尚品牌与其他电商网站商品品牌与详情等

通过频率、ip池、匿名代理等应对一些网站的反爬

3、同图搜索Solr服务开发

基于算法组的同图策略,使用solr做java接又实现rpc服务搭建,进行索引构建和solr实现

北京XXX

java大数据工程师— 2013.4月-2015.12月

1、负责实时流消息处理应用系统构建和实现

在调研了kafka的优势和我们的具体需求之后,用kafka作为消费者,保证高吞吐处理消息,并持久化消息的同时供其它服务使用,进行了系统的设计和搭建使用。 本地日志保证消息不丢失,并通过记录游标滑动重复读取数据。

使用storm 负责搭建消息处理架构,并完成基于业务的消息落地,提供后续的数据 统计分析实时和离线任务,诸如pv、uv等数据,为运营做决策

网站用户行为埋点和基于js的日志收集器开发,定义接又和前端部门配合。主用go 2、hadoop集群搭建和数据分析处理

2、基于CDH的集群搭建工作,后期进行维护

编写MapReduce程序,能将复杂工作逻辑化,尽最大能力发挥大数据应用的特点, 对程序高要求,监控自己程序运行情况,使用内存合理,注重增量和全量运算的利弊

3、调度系统设计与实现 基于quartz2搭建调度平台,带徒弟实现相关功能并定期review代码

4、数据库调优 负责主从搭建,并掌握主从搭建的利弊,了解业界mycat原理,有数据库优化经验,能 正确并擅长使用索引,对锁有深刻的认识

5、网站开发 java web网站业务开发,并能很好的使用缓存技术,对重构有实际的经验,并对面向对 象开发有全面的实战经验。了解java数据结构的使用场景,虽然对于大并发没有太大的 发挥余地,但是掌握了数据结构,对于并发和阻塞等有自己的见解。

点评:非常清晰的告诉简历阅读者自己做了什么事情,负责了什么样的事情,用了什么技术栈,且逻辑连贯。

四、 工作期望&个人评价

加分写法:

对自己有一个全方位的一个描述总结,让别人更好的解读你。或者在此处,高亮你的优点特长有哪些。

即使不写个人评价,也一定记得写上工作期望。

减分写法:

完全看不出个性特点,写和没写没什么区别。 来几个栗子

栗子1 错误打开方式

为人性格,诚实谦虚,勤奋,能吃苦耐劳,有耐心,有团队意识,能和同学和谐相处,能虚心接受别人的建议的人。

责任心强,善于沟通,具有良好的团队合作精神;专业扎实,具有较强的钻研精神和学习能力;性格比较乐观外向,喜欢打羽毛球。

栗子2正确打开方式

我对自己的定位: 主攻前端,同时在其他方面打打辅助。我不希望过于依赖别人,即使没有后端没有设计没有产品经理,我依然想要把这个产品做到完美。毕竟全栈才能最高效地解决问题。

我对工作的态度: 第一,要高效完成自己的本职工作。第二,要在完成的基础上寻找完美。第三,要在完美的基础上,与其他同事 互相交流学习,互相提升。工作是一种生活方式,不是一份养家糊口的差事。

我怎样克服困难: 不用百度是第一原则,在遇到技术问题时我往往会去Google、Stack over flow上寻找答案。但通常很多问题 并不一定已经被人解决,所以熟练地阅读源码、在手册、规范甚至 REPL的环境自己做实验才是最终解决问题的办法。相信事实的结果,自己动手去做。

怎样保持自己的视野:我一直认为软件开发中视野极其重要,除了在 Twitter 上关注业界大牛,Github Trending 也是每周必刷。 另外 Podcast、Hacker News、Reddit 以及TechRadar 也是重要的一手资料。保持开阔视野才能找到更酷的解决方案。

我的优势: 热爱技术、自学能力强,有良好的自我认知。全面的技能树与开阔的视野,良好的心态、情商与沟通能力。

我的劣势: 非科班出身没有科班同学对算法的熟练掌握,但我决定死磕技术,弥补不足。

栗子3正确打开方式

极客、热爱技术、热爱开源

Ruby on Rails:精通

Agile/Lean:精通

ReactJS:掌握

Docker:掌握

AWS:掌握

五、 是否有博客,个人技术栈点等

看到有这项的HR两眼已经放光了,加分加分项,说明你真正的热爱技术,善于学习总结,乐于分享,且有投入自己的业余时间到软件事业中。