搜档网
当前位置:搜档网 › Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记
Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记

要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。

作者:FunHacks来源:FunHacks|2016-12-28 11:20

收藏

分享

简介

正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式‘hello’ 可以匹配字符串‘hello’。

要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。

正则表达式有多种不同的风格,下表列出了适用于Python 或Perl 等编程语言的部分元字符以及说明:

re 模块

在Python 中,我们可以使用内置的re 模块来使用正则表达式。

有一点需要特别注意的是,正则表达式使用\对特殊字符进行转义,比如,为了匹配字符串‘https://www.sodocs.net/doc/2117810322.html,’,我们需要使用正则表达式'python\.org',而Python 的字符串本身也用\转义,所以上面的正则表达式在Python 中应该写成'python\\.org',这会很容易陷入\的困扰中,因此,我们建议使用Python 的原始字符串,只需加一个r 前缀,上面的正则表达式可以写成:

r'python\.org'

re 模块提供了不少有用的函数,用以匹配字符串,比如:

?compile 函数

?match 函数

?search 函数

?findall 函数

?finditer 函数

?split 函数

?sub 函数

?subn 函数

re 模块的一般使用步骤如下:

?使用compile 函数将正则表达式的字符串形式编译为一个Pattern 对象

?通过Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个Match 对象)

?最后使用Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

compile 函数

compile 函数用于编译正则表达式,生成一个Pattern 对象,它的一般使用形式如下:

https://www.sodocs.net/doc/2117810322.html,pile(pattern[, flag])

其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。

下面,让我们看看例子。

import re

# 将正则表达式编译成Pattern 对象

pattern = https://www.sodocs.net/doc/2117810322.html,pile(r'\d+')

在上面,我们已将一个正则表达式编译成Pattern 对象,接下来,我们就可以利用pattern 的一系列方法对文本进行匹配查找了。Pattern 对象的一些常用方法主要有:

?match 方法

?search 方法

?findall 方法

?finditer 方法

?split 方法

?sub 方法

?subn 方法

match 方法

正则表达式 Regular Expression 例子 sample VB版

VS SDK Regular Expression Language Service Example Deep Dive (VB) István Novák (DiveDeeper), Grepton Ltd. May, 2008 Introduction This example implements a small language service for demonstration purposes. This is called Regular Expression Language Service since it can tokenize text by RegEx patterns (lower case letters, capital letters, digits) and can use its own syntax coloring scheme for each token. However, the functionality of this sample is quite far away from a full language service it illustrates the basics. The source files belonging to this code have only about three hundred lines of essential code. When reading through this deep dive you are going to get familiar with the following concepts: How language services should be registered with Visual Studio? What kind of lifecycle management tasks a simple language service has? How to create a very simple language service? How to implement a scanner supporting syntax coloring? To understand concepts treated here it is assumed that you are familiar with the idea of VSPackages and you know how to build and register very simple (even non-functional) packages. To get more information about packages, please have a look at the Package Reference Sample (VisualBasic Reference.Package sample). Very basic knowledge about regular expressions is also expected. Regular Expression Language Service Open the Microsoft Visual Studio 2008 SDK Browser and select the Samples tab. In the top middle list you can search for the “VisualBasic Example.RegExLangServ” sample. Please, use the “Open this sample in Visual Studio” link at the top right panel of the browser app to prepare the sample. The application opens in Visual Studio 2008. Running the sample Rebuild the package and start it with the Experimental Hive! Without creating a new solution, add a new text file with the File|New|File... menu function. Use the File|Save As menu function to store the text file with the RegexFile.rgx name. To avoid attaching the .txt extension to the end of the file name, set the “Save as type” to “All files (*.*)” as illustrated in Figure 1:

ragel学习

Ragel学习笔记 解决的问题 采用一个连续的可能庞大的正则表达式,可以有一些分块式action,或者只是判断某一串符合此表达式。采用解决问题模型为有限状态机。 语法 嵌入C, C++, Objective-C, D, Go,Java and Ruby. 多行代码 %%{ … … }%% 单行代码%% 实例代码 #include #include %%{ machine foo; main := ( 'foo' | 'bar' ) 0 @{ res = 1; }; }%% %% write data; int main( int argc, char **argv ) { int cs, res = 0; if ( argc > 1 ) { char *p = argv[1]; char *pe = p + strlen(p) + 1; %% write init; %% write exec; } printf("result = %i\n", res ); return 0; }

状态机名 machine fsm_name; 必须在块开头注明,如上例。如果没注明则用先前使用的,如没有则报错。可以采用多文件编译include为关键字导入文件。 定义语句 = ; 名为name的state直到定义实例化(被引用时(下一个为:=形式))才生成,该语句类似一个类的定义 状态机实例化 := ; 该语句产生状态机的一个状态,名为main的状态为初始start状态。 %% write init // 该命令设置cs (current_state) 为main的状态,即为start状态 如果没有main 则最近一个实例化的状态即为开始状态。 在外部执行控制语句可以通过设置cs来设置状态机,内部执行,采用fcall fgoto fnext实现状态切换。 导入ragel代码 include FsmName "inputfile.rl"; 如果没名会与当前状态机同名,如果没输入文件,则导入FsmName,检索路径与当前文件相同,可以通过-I命令增加include 检索路径,同makefile。 导入定义 import "inputfile.h"; 文件内容形如:(单引号类似命令标记)定义name 为number(纯数字) 或者lit_string(字符串) name '=' number name '=' lit_string 'define' name number 'define' name lit_string 如果输入文件为一个ragel 程序则忽略所有tokens,检索路径与当前文件相同,可以通过-I 命令增加import检索路径,同include。

arcgis中Python脚本的使用【简明教程】

[初学入门]ArcGIS中Python脚本的使用 By:飞天小猪 目录 写在前面的话 (2) 前言 (2) 一、PYTHON语言基础 (3) 1数学运算符 (3) 2字符串操作 (4) 3模块的使用(M ODULES) (5) 4使用DEF构建函数 (6) 5流程控制结构:I F,W HILE,F OR (7) 6简单输入和输出 (9) 二、ARCGIS&PYTHON (10) 1如何创建地理处理对象(GEOPROCESSOR OBJECT) (10) 2获取地理处理帮助 (11) 2.1举例:如何使用Geoprocessor Programming Model中的Lists (11) 3使用地理处理工具——T OOLBOXES和A LIASES (12) 4在建模中使用脚本(S CRIPTS IN M ODEL B UILDER) (13) 5在P YTHON W IN里调试地理处理脚本 (19) 5.1 调试选择和消息 (20) 5.2PythonWin的调试工具 (21) 5.3地理处理工具举例 (22) 6使用描述(D ESCRIBE)和存在(E XISTS)获取数据信息 (22) 6.1描述 (23) 6.2存在(Exists) (24) 6.3在循环中使用描述和存在 (24) 7在P YTHON脚本中使用地图代数(M AP A LGEBRA) (27) 8数据管理和指针(D ATA M ANAGEMENT AND C URSORS) (28) 8.1数据管理(Data Management) (28) 8.2指针(Cursors) (29) 附录1:地理处理脚本中输入&输出方法指南 (32) 附录2:其他 (33)

Python基础教程(自学记录)精编版

第一章快速改造:基础知识 1.2交互式解释器 在IDLE编辑器,在提示符后输入help然后按回车;也可以按下F1获得有关IDLE的帮助信息 1.4数字和表达式 1/2返回0,整除除法;1.0/2返回0.5,用一个或者多个包含小数点的数字参与计算。另外改变除法的执行方式:from_future_import division //可以实现整除,1.0//2.0返回0.0 %取余数;**幂运算; >>> 1/2

>>> 1.0/2 0.5 >>> 1.0//2.0 0.0 >>> 10%3 1 >>> 9**(1/2) 1 >>> 9**(1.0/2) 3.0 >>> 2.75%0.5 0.25 >>> -9%4 3 >>> -3%2 1 >>> -3/2 -2 1.4.1长整数 普通整数不能大于2147483647也不能小于-2147483648,若更大的数,可以使用长整数。长整数结尾有个L,理论上小写也可以,不过为了便于识别,尽可能用大写。

1.4.2十六进制和八进制 0XAF返回175 ,十六进制; 010返回8,八进制 >>> 0xAF 175 >>> 010 8 1.5变量 包含字母、数字和下划线。首字母不能是数字开头。 1.8函数 Pow计算乘方:pow(2,3),2**3均返回8;pow等标准函数称为内建函数。 Abs(-10)求绝对值,返回10;round(1.0/2.0)返回1.0,把浮点数四舍五入为最接近的整数值。 >>> pow(2,3) 8 >>> 2**3 8 >>> abs(-10) 10 >>> round(1.0/2.0) 1.0

正则表达式 (1)

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 列目录时,dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。 正则表达式是由普通字符(例如字符a 到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 3.1 普通字符 由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。 3.2 非打印字符 字符含义 \cx 匹配由x指明的控制字符。例如,\cM 匹配一个Control-M 或回车符。x 的值必须为A-Z 或a-z 之一。否则,将c 视为一个原义的‘c’ 字符。 \f 匹配一个换页符。等价于\x0c 和\cL。 \n 匹配一个换行符。等价于\x0a 和\cJ。 \r 匹配一个回车符。等价于\x0d 和\cM。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。 \t 匹配一个制表符。等价于\x09 和\cI。 \v 匹配一个垂直制表符。等价于\x0b 和\cK。

3.5 定位符 用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。 3.6 选择 用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。 其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。 3.7 后向引用 对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从1 开始,连续编号直至最大99 个子表达式。每个缓冲区都可以使用‘\n’ 访问,其中n 为一个标识特定缓冲区的一位或两位十进制数。 可以使用非捕获元字符‘?:’, ‘?=’, or ‘?!’ 来忽略对相关匹配的保存。 4. 各种操作符的运算优先级 相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下: 操作符描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \anymetacharacter 位置和顺序 | “或”操作 5. 全部符号解释

hp_unix学习笔记

第一部分: UNIX系统基础 第一章: UNIX shell 1. UNIX操作系统的核心称为内核,内核是处理用户软件和计算机硬件之间所有通信的一个软件.由内核决定如何同外围设备通信等等.UNIX用户是无法与内核直接交互的,而是经常同一个叫做UNIX shell的程序打交道.shell是一个命令解释器.shell接受用户的命令,解释它们并采取必要的动作去执行这个命令.这也为用户提供这些命令的输出. Shell是一个UNIX用户的命令解释器。它从用户那里取得输入并根据输入完成一个动作。内部命令内置在shell中而,外置命令以单独的文件保存。 如果你使用了一个长度大于8的口令,第8个字符以后的字符被忽略。 2. 在UNIX系统中,每一个用户都有一个独一无二的号码和用户名联系在一起,这个号码叫做User ID. Root 用户的ID是0 因此任何用户拥有了这个ID也就拥有了超级用户权限. 3. $表示为普通用户. #表示为超级用户. 4. 按ESC+K: 重新执行上一次的命令. 5. History命令用来回调以前使用过的命令. History -3 :显示最近使用的三个命令. 6. 别名: alias dir=ls 用dir来取代ls 7.启动文件有两种:系统启动文件和用户启动文件.系统启动文件对系统中所有用户都是通用的,但用户启动文件可以为每一个用户定制. HP-UX系统的启动文件叫作profile 存放在/etc目录下 用户的启动文件叫作.profile 存放在用户的主目录下. 8. w命令会告诉你系统已经启动多长时间,当前的时间及登录的用户在做什么. 9.命令链接是为了给频繁使用的命令提供一个较短的名字. 10.打印标签: banner 字符 banner yujile. 11.cal 显示日历 12.shell允许用户在单独一行里输入多个命令.每个命令之间用冒号分隔. 13.请注意口令长度必须为6~8个字符,并且同时包括字符和数字.口令中至少有两个字符是字母而且至少有一个是数字或特殊字符.(第八个字符以后的字符都会被忽略) 第二章:管理文件和目录 1.创建文件 cat>文件名注意:在每一行的结尾按Enter, 完成文本的输入后按ctrl+d以结束文本输入过程并保存文件。 2.在UNIX里执行文件没有特殊的名字,文件权限显示哪个文件是可执行的,哪个是不可执行的。 3.ls –a 可以显示隐含文件包括以一个点(.)开头的隐含文件 4.文件权限d 表示目录–表示常规文件 5.ls –f 或 lsf 命令在显示目录时:在目录名结尾附加―/‖符号。 6.rm –rf 删除一个非空目录。不会对用户有任何警告。 7.UNIX文件系统由目录和文件构成,顶级目录叫做根目录,用―/‖符号表示,所有其他目录和文件在根目录里面。一个目录的上一级叫做父目录,而下一级目录叫做子目录。8.无论何时创建一个新目录,两个条目自动创建在新目录里,它们是―.‖(参照于当前目录)和―..‖(参照于当前目录的父目录)―.‖字符是指当前目录的一个相对路径.

常用正则表达式

1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$"//非负整数(正整数+ 0) 3. "^[0-9]*[1-9][0-9]*$"//正整数 4. "^((-\d+)|(0+))$"//非正整数(负整数+ 0) 5. "^-[0-9]*[1-9][0-9]*$"//负整数 6. "^-?\d+$"//整数 7. "^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0) 8. "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数 9. "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0) 10. "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数 11. "^(-?\d+)(\.\d+)?$"//浮点数 12. "^[A-Za-z]+$"//由26个英文字母组成的字符串 13. "^[A-Z]+$"//由26个英文字母的大写组成的字符串 14. "^[a-z]+$"//由26个英文字母的小写组成的字符串 15. "^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串 16. "^\w+$"//由数字、26个英文字母或者下划线组成的字符串 17. "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址 18. "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url 19. /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 20. /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 21. "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil 22. /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码 23. "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址 24. 25. 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 26. 匹配双字节字符(包括汉字在内):[^\x00-\xff] 27. 匹配空行的正则表达式:\n[\s| ]*\r 28. 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 29. 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 30. 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 31. 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 32. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 33. 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 34. 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 35. 36. 37. 元字符及其在正则表达式上下文中的行为:

Python基础入门教程

Python基础入门教程 你可能已经听说过很多种流行编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言,那么你知道Python是一种怎样的计算机程序设计语言吗?下面应广大读者需求,给大家呈上一篇Python基础入门教程的文章。 Python 是由Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 像Perl 语言一样,Python 源代码同样遵循GPL(GNU General Public License)协议。 现在Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。 Python 特点

? 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。 ? 2.易于阅读:Python代码定义的更清晰。 ? 3.易于维护:Python的成功在于它的源代码是相当容易维护的。 ? 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。 ? 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。 ? 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。 ?7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。 ?8.数据库:Python提供所有主要的商业数据库的接口。 ?9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。 ?10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

传智播客刘意老师JAVA全面学习笔记

JAVA 学 习 路 线

第一天 1:计算机概述(了解)2 2:键盘功能键的认识和快捷键(掌握)2 3:常见的DOS命令(掌握)3 4:Java语言概述(了解)3 5:JDK,JRE,JVM的作用及关系(掌握) 3 6:JDK的下载,安装,卸载(掌握)4 7:第一个程序:HelloWorld案例(掌握)4 8:常见的问题(掌握)5 9:path环境变量(掌握)5 10:classpath环境变量(理解)5 第二天 1:关键字(掌握)6 2:标识符(掌握)6 3:注释(掌握)7 4:常量(掌握)7 5:进制转换(了解)7 6:变量(掌握)8 7:数据类型(掌握)8 8:数据类型转换(掌握)8 第三天 1:运算符(掌握)10 2:键盘录入(掌握)11 3:流程控制语句12 4:if语句(掌握)12 第四天 1:switch语句(掌握)14 2:循环语句(掌握)15 3:控制跳转语句(掌握)17 第五天 1:方法(掌握)18 2:数组(掌握)19 第六天 1:二维数组(理解)23 2:两个思考题(理解)23 3:面向对象(掌握)23 第七天

1:成员变量和局部变量的区别(理解)25 2:类作为形式参数的问题?(理解)25 3:匿名对象(理解)25 4:封装(理解)25 5:private关键字(掌握)25 6:this关键字(掌握)26 7:构造方法(掌握)26 8:代码:Student s = new Student();做了哪些事情?(理解)27 9:面向对象的练习题(掌握)27 第八天 1:如何制作帮助文档(了解)28 2:通过JDK提供的API学习了Math类(掌握)28 3:代码块(理解)28 4:继承(掌握)28 第九天 1:final关键字(掌握)30 2:多态(掌握)30 3:抽象类(掌握)32 4:接口(掌握)33 第十天 1:形式参数和返回值的问题(理解)35 2:包(理解)35 3:导包(掌握)35 4:权限修饰符(掌握)36 5:常见的修饰符(理解)36 6:内部类(理解)37 第十一天 1:Eclipse的概述使用(掌握)40 2:API的概述(了解)40 3:Object类(掌握)40 第十二天 1:Scanner的使用(了解)41 2:String类的概述和使用(掌握)41 第十三天 1:StringBuffer(掌握)44 2:数组高级以及Arrays(掌握)44

正则表达式介绍和例子分析

含义:编写字符串处理的程序或网页时,会有查找符合某复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。它是记录文本规则的代码。 元字符 用来代替字符的符号 表1.常用的元字符 代码说明 .匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s匹配任意的空白符 \d匹配数字 注:\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等正则表达式中的空格会当成空格匹配。(输入几个空格就匹配几个) 非打印字符

限定符 重复:表现重复时用的是大括号{}和* + ,表示范围时用的是中括号[],中括号里面是只选其中一个的组合。表达分组时用圆括号(),一个圆括号表示一个意思。 表2.常用的限定符 代码/语法说明 *重复零次或更多次 +重复一次或更多次 重复零次或一次 {n}重复n次 {n,}重复n次或更多次 {n,m}重复n到m次 字符类[],用来表示取字符的范围区间,用中括号括起来 [0-9]代表\d [a-z0-9A-Z]表示\w 分支条件,用|表示或者的关系。 贪婪与懒惰、最先开始匹配拥有最高优先权 *、+和限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个就可以实现非贪婪或最小匹配。 .*表示尽可能匹配多的字符 .*表示尽可能少的字符 例如:字符串aabab,用贪婪匹配a.*b得到aabab,用懒惰匹配a.*b得到aab和ab

定位符 定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达 式出现在一个单词内、在一个单词的开头或者一个单词的结尾。 定位符用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表 示非单词边界。 正则表达式的限定符有: 字符描述 ^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后匹配。 $匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前匹配。 \b匹配一个字边界,即字与空格间的位置。 \B非字边界匹配。 子表达式分组获取() 分组,用()把子表达式括起来,给一个组号,后面可以再用 后向引用,用()定义的分组,可以给它定一个组名,在后面加以利用。 用(\w+)或者(’Word’\w+)定义\w+组名为Word,利用方式为\k

最全的java学习笔记(必看)

% Java学习笔记 目录 一、 Java技术基础 ........................................................... 编程语言.................................................................. Java的特点.............................................................. Java开发环境............................................................ Java开发环境配置........................................................ ( Linux命令与相关知识..................................................... Eclipse/Myeclipse程序结构............................................... 二、 Java语言基础 ........................................................... 基础语言要素.............................................................. 八种基本数据类型.......................................................... 常量和变量................................................................ 运算符与表达式............................................................ 编程风格.................................................................. : 流程控制语句.............................................................. 数组...................................................................... 字符串.................................................................... 方法三要素................................................................

正则表达式介绍和例子

正则表达式 含义:编写字符串处理的程序或网页时,会有查找符合某复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。它是记录文本规则的代 码。 元字符 用来代替字符的符号 注:\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等 正则表达式中的空格会当成空格匹配。(输入几个空格就匹配几个) 非打印字符 非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列: 字符描述 \cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M 或回车符。x 的值必须为A-Z 或a-z 之则,将 c 视为一个原义的'c' 字符。 \f 匹配一个换页符。等价于\x0c 和\cL。 \n 匹配一个换行符。等价于\x0a 和\cJ。 \r 匹配一个回车符。等价于\x0d 和\cM。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

限定符 重复:表现重复时用的是大括号{}和* + ?,表示范围时用的是中括号[],中括号里面是只选其中一个的组合。表达分组时用圆括号(),一个圆括号表示一个意思。 ●字符类[],用来表示取字符的范围区间,用中括号括起来 [0-9]代表\d [a-z0-9A-Z]表示\w ●分支条件,用|表示或者的关系。 ●贪婪与懒惰、最先开始匹配拥有最高优先权 *、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。 .*表示尽可能匹配多的字符 .*?表示尽可能少的字符 例如:字符串aabab,用贪婪匹配a.*b得到aabab,用懒惰匹配a.*?b得到

python核心编程第15章学习笔记

Python核心编程学习笔记之chapter15这一章蛮重要,代码都敲进去试过,请批评指正。 方便起见,程序写在py文件中。 1.识别下列字符串:“bat,”“bit,”“but,”“hat,”“hit,”或“hut” #!/usr/bin/env python import re pattern='[bh][aiu]t' m='bkibit' n=re.search(pattern,m) if n is not None: print n.group() Ps:还可以findall函数 2.匹配用一个空格分隔的任意一对单词,比如,名和姓 pattern='[A-Za-z]+\[A-Za-z]+' 3.匹配用一个逗号和一个空格分开的一个单词和一个字母。例如,英文人名中的姓和名的首字母 pattern='[A-Za-z]+\.\[A-Za-z]' 4.匹配所有合法的Python标识符 pattern='[\w]+' Ps:不是非常完美,&算不算? 5.请根据您(读者)本地关于地址的格式写法匹配一个街道地址(你写出的正则表达式要尽可能通用以匹配任意数目的表示街道名字的单词, 包括类型指示)。比如,美国的街道地址使用这样的格式:1180 Bordeaux Drive. 使你写的正则表达式尽可能通用,要求能够匹配多个单词的街道名字, 如:3120De la Cruz Boulevard. pattern='[\d]+\[A-Za-z\]+' Ps:1180Bordeaux Drive of New York呢?

6.匹配简单的以“www.”开头,以“.com”作结尾的Web域名,例如:https://www.sodocs.net/doc/2117810322.html,. 附加题:使你写的正则表达式还支持其他顶级域名:.edu,.net 等,比如:https://www.sodocs.net/doc/2117810322.html,. pattern='w{3}\.[\w]+\.[\w]+' Ps:seach与match的差别? 7.匹配全体Python整数的字符串表示形式的集合 pattern='\d+' 8.匹配全体Python长整数的字符串表示形式的集合 pattern='\d+[L]?' 9.匹配全体Python浮点数的字符串表示形式的集合 pattern='\d+\.\d*' 10.匹配全体Python复数的字符串表示形式的集合 pattern='\d*\.?\d*\+\d*\.?\d*j' 11.匹配所有合法的电子邮件地址(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。 pattern='\w+\@\w+\.\w+' 12.匹配所有合法的Web网站地址(URLs)(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。 pattern='www\.\w+\.\w+' 13.type().type()内建函数返回一个对象类型,此对象显示为Python的字符串形式, 如下所示: >>>type(0) >>>type(.34) >>>type(dir)

python爬虫入门到实战的学习顺序

https://www.sodocs.net/doc/2117810322.html, python爬虫入门到实战的学习顺序 Python是一种常见的爬虫语言,可以抓取网络的大部分数据。比如证券交易数据、天气数据、网站用户数据等等,另外python内含很多用来做数据分析的包,拿到这些数据之后你就可以做详细的数据分析工作。正是因为python如此强大,所以越来越多的朋友开始学习python爬虫,下面为大家介绍python爬虫如何入门。 一、Python基础学习。 首先,我们要用Python写爬虫,肯定要了解Python的基础。下面推荐知乎用户Crossin的python自学方法: 关于自学python,个人最大的3点经验: 1、找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python 教程》,不过这本书不是非常适合零基础初学者。零基础推荐《与孩子一起学编程》,或者看我写的教程Crossin的编程教室-Python入门。 2、去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。 3、最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。 所以除了前面说的3点经验,给初学编程者的额外建议: 1、首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。

excelvba正则表达式从实例开始

'EXCEL VBA 正则表达式从实例开始 所有代码都测试过 ' ' '[2011-09-09:'[2010-08-08:'数据验证经常出现的情况是,需要验证和处理大量的文本内容,有时候需要查找字符串,有时候要按条件替换,并且这些待处理的问题还是有一定的规律可循的,但是无法通过枚举的方式挨个验证,这个时候就需要正则表达式来帮忙。 '1.正则表达式(Regular Expression)基础 ' 正则表达式是通用的文本搜索和处理方案,它的知识不是VBA独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google一下,或者参看下面的一些入门教程: 'tutorials/regex/ '''中的正则表达式应用 ' 在VBA中使用正则表达式,可以通过下列途径实现: '创建正则表达式对象: '前期绑定:在VBA代码编辑器中的"Tools"菜单中,选中"References...",然后引用Microsoft VBScript Regular Expressions 类库,然后直接定义对象:Dim reg As New RegExp。 '后期绑定:使用CreateObject方法定义对象:CreateObject("")。 '前一种方式的优点是可以有编辑器的Intellisense支持 'RegExp对象的属性: 'Global - 设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串,Global 属性的值应该为 True,否则其值为False。默认的设置为True。 'Multiline - 返回正则表达式是否具有标志m, 缺省值为False。如果指定的搜索字符串分布在多行,这个属性是要设置为True的。 'IgnoreCase - 设置或返回一个Boolean值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性应该为False;否则应该设为True。缺省值为True。 'Pattern - 设置或返回被搜索的正则表达式模式。被搜索的正则字符串表达式。它包含各种正则表达式字符。 'RegExp对象的方法: 'Execute - 对指定的字符串执行正则表达式搜索。需要传入要在其上执行正则表达式的文本字符串。正则表达式搜索的设计模式是通过 RegExp对象的Pattern来设置的。Execute 方法返回一个Matches集合,其中包含了在string中找到的每一个匹配的Match对象。如果未找到匹配,Execute将返回空的Matches集合。 'Replace -替换在正则表达式查找中找到的文本 'Test - 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。 'MatchCollection对象与Match对象 '匹配到的所有对象放在MatchCollection集合中,这个集合对象只有两个只读属性: 'Count: 匹配到的对象的数目 'Item:集合的又一通用方法,需要传入Index值获取指定的元素。

PHP正则表达式二徐枭雄课堂笔记

正则表达式 1.什么是正则表达式 a)例子:’//’;这就是正则表达 式 b)乱七八糟的一堆字符堆砌在一起,神秘的符号,有着 奇特的意义 2.和正则表达式相识的事物? a)乱/看不懂/神秘/意义 医生的字只有医院的人能看懂 道士的符只有道士明白 女人的心只有女人能懂 正则表达式只有程序员能看懂(所有的高级语言中都有正则表达式) 3.学习正则表达式可以做什么、 a)操作字符串时正则表达式的唯一作用 验证用户名长度是否合法 验证密码是否符合标准 验证手机号 验证URL地址 验证邮箱

BBS编辑器 Qq聊天表情 新闻采集器小偷程序 4.看看正则表达式的一些特点 a)1.正则表达式也是一个字符串 b)2.由特殊意义的字符组成的字符串 c) 3.具有一定的编写规则,也是一种模式 d)4.看做是一种编程语言 因为是用一些特殊字,按照规则编写出来的字符串,形成一种模式-正则表达式。 注意:如果正则表达式,不和函数一起使用,则他就是一个普通的字符串而已。如果把正则表达式放入到函数中一起使用,才能发挥出正则表达式的作用。 比如:将正则表达式放入到分分隔函数,哪可以用这个正则表达式去分隔字符串。 总结:正则弊端是就是通过构建具有特定规则的模式了,在于输入的字符串信息进行比较,分隔,查找,替换等工作。 在实际应用中记住一点:能使用字符串处理函数来完成的就不要使用正则表达式来完成。愿意:效率低。

5.PHP中提供了两套正则表达式函数库 a)Posix 扩展正则表达式函数-》ereg b)Perl 兼容正则表达式函数->preg (两套函数库功能一样,但是perl效率高,所以官方推荐使用perl) 6.学习正则表达式时,有两方面学习 a)1.正则表达式的模式如何编写 b)2.学习正则表达式的强大处理函数 7.正则表达式的语法(分4部) a)1.正则定界符 b)2.正则表达式中的原子 c) 3.正则表达式中的元字符(原子修正符) d)4.正则表达式的模式修正符 8.正则表达式的定界符 a)正则表达式的定界符是用来声明正则表达式的边界符 号。 正则表达式常用个的边界符是’/‘实际上任何非数字字

相关主题