正则表达式

合集下载

什么是正则表达式?

什么是正则表达式?

什么是正则表达式?
什么是正则表达式?
正则表达式也称模式表达式,其⾃⾝具有⼀套⾮常完整的、可以编写模式的语法体系,提供了⼀种灵活且直观的字符串处理⽅法。

正则表达式通过构建特定规则的模式,与输⼊的字符串信息⽐较,从⽽实现字符串的匹配、查找、替换及分割等操作。

正则表达式并不是PHP⾃⼰的产物,在很多领域都会见到它的应⽤,除了在perl、C#及Java语⾔中应⽤外,我们的B/S架构软件开发
中,Linux操作系统、前台JavaScript脚本、后台脚本PHP以及MySQL数据库中都可以应⽤到正则表达式。

正则表达式语法概述
正则表达式是⼀种描述字符串结构的语法规则,是⼀个特定的格式化模式,可以匹配、替换、截取匹配的字串。

对于⽤户来说,可能以前接触过DOS,如果相匹配当前⽂件夹下所有的⽂本⽂件,可以输⼊“dir *.txt”命令,按enter键后所有“.txt”⽂件都会被列出来。

这⾥的“*.txt”即可理解为⼀个简单的正则表达式。

PHP⽀持两种风格的正则表达式语法:POSIX和Perl。

这两种风格的正则表达式是PHP编译时的默认风格。

在PHP5.3版本中,Perl风格不能被禁⽤。

POSIX正则表达式更容易掌握,但是他们不是⼆进制安全的。

何时⽤到正则表达式?
到⽬前为⽌,我们进⾏的所有模式匹配都使⽤了字符串函数。

我们只限于进⾏精确匹配,或精确的⼦字符串匹配。

如果希望完成⼀些更负责的模式匹配,应该⽤正则表达式。

正则表达式在开始学习时很难掌握,但是却⾮常有⽤。

常用的正则表达式

常用的正则表达式

常用的正则表达式整理1、非负整数:^\d+$2、正整数:^[0-9]*[1-9][0-9]*$3、非正整数:^((-\d+)|(0+))$4、负整数:^-[0-9]*[1-9][0-9]*$5、整数:^-?\d+$6、非负浮点数:^\d+(\.\d+)?$7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)) $8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$9、负浮点数:^(-((正浮点数正则式)))$10、英文字符串:^[A-Za-z]+$11、英文大写串:^[A-Z]+$12、英文小写串:^[a-z]+$13、英文字符数字串:^[A-Za-z0-9]+$14、英数字加下划线串:^\w+$15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$17、邮政编码:^[1-9]\d{5}$18、中文:^[\u0391-\uFFE5]+$19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$21、双字节字符(包括汉字在内):^\x00-\xff22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>24、匹配空行:\n[\s| ]*\r25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)29、提取信息中的中国手机号码:(86)*0*13\d{9}30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}31、提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+34、提取信息中的任何数字:(-?\d*)(\.\d+)?35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)36、电话区号:/^0\d{2,3}$/37、腾讯QQ号:^[1-9]*[1-9][0-9]*$38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S *)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$下表是元字符及其在正则表达式上下文中的行为的一个完整列表:\将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

正则表达式 $用法

正则表达式 $用法

正则表达式 $用法
(原创版)
目录
1.正则表达式简介
2.$用法概述
3.$用法实例分析
4.$用法总结
正文
1.正则表达式简介
正则表达式(Regular Expression,简称 regex)是一种强大的文本处理工具,可以用来检查文本是否符合某种模式、提取文本中的特定信息等。

正则表达式广泛应用于计算机科学和编程领域,例如文本编辑器、搜索引擎、数据验证等场景。

2.$用法概述
在正则表达式中,$符号表示字符串的结尾。

$用法主要用于匹配字符串的最后一个字符或者表示字符串以某个字符结尾。

当需要在正则表达式中使用$时,需要在$符号前加上反斜杠()进行转义,以免被解释为特殊符号。

3.$用法实例分析
举例来说,如果我们想要匹配所有以字母 a 结尾的单词,可以使用以下正则表达式:
```
b[a-zA-Z]*[a-zA-Z]$b
```
这个正则表达式的意思是:
- `b`表示单词边界,用于匹配单词;
- `[a-zA-Z]`表示任意一个大写或小写字母;
- `*`表示前面的字符(字母)可以出现任意次;
- `[a-zA-Z]`表示最后一个字符必须是字母;
- `b`表示单词边界,用于匹配单词结尾。

这样,我们就可以匹配到所有以字母 a 结尾的单词,如"apple"、"banana"等。

4.$用法总结
$用法在正则表达式中起到了关键的作用,它可以帮助我们精确地匹配字符串的结尾。

在实际应用中,我们可以灵活运用$用法来处理各种文本问题。

正则表达式150种表达方式

正则表达式150种表达方式

正则表达式150种表达方式1、删除所有数字。

只要查找:\d就OK。

为了不留空行:替换处:\d2、删除所有英文字母。

只要查找:\a就OK。

为了不留空行:替换处:\d3、删除除换行符以外的所有。

只要查找:. 为了不留空行:替换处:\d4、既删除英文字母又删除数字。

只要查找:\w。

为了不留空行:替换处:\d5、删除数字加字母加等于(如:3a=或3zz=)只要查找:\d+\a+\=。

为了不留空行:替换处:\d6、删除换行。

只要查找:$。

替换处:\d(还原查找:\a+=\f。

替换:\0\n)。

如在换行后加一空格,查找:(\a)$。

替换:\0 \d。

7、删除空行只要查找:^$。

为了不留空行:替换处:\d8、删除首尾空格。

只要查找:^\s*|\s*$就OK9、删除行前数字及顿号。

只要查找:\d+、替换为空10、删除末尾标点符号。

只要查找:\P+$|\P+\s+$,“|”前面是没有空格的,“|”后面有空格,P后的加是为了……而用的。

11、删除末尾空格。

只要查找:\s+$。

替换为空。

12、删除第一个字如:“的我们”中的“的”只要查找:^\的。

13、删除第几个字。

查找:查找:^().(.+)。

替换:\1\2。

去掉前面的拼音:查找:^\a+替换为空。

第一个括号里可加“.”且可变。

14、删含的。

查:.*的.*替:\d。

的头查:.*=的.*替:\d。

的尾查:\a.*\c.*的$替:\d(留它不匹配)●删非的行查:^[^的]+$替:\d15、删除几码以上的码查:^(...)...替:\1。

删第几位码。

查:^(...).(.+)替:\1\2(变成\1,\2则其位则改成,了)首括号的.可变。

16、删除各类型的几字词,但必须是码前词后或纯词。

三字词:查找:^\~f{}\f{3}$替换:\d。

替换:\d “3”可以改。

17、删除11字词及其以上的词条查找(自定义格式):\a{}\=(\c|\P|\p){11,}。

替换:\d。

11可改。

正则表达式公式大全

正则表达式公式大全

正则表达式公式大全正则表达式是一种处理字符串的强大工具,它可以帮助我们快速、高效地匹配、替换、删除、提取字符串。

很多编程语言,包括Python、Java、JavaScript等都支持正则表达式,所以掌握正则表达式是非常重要的。

下面是一些常用的正则表达式公式:1. 匹配单个字符:(1).点号(.)表示匹配任何单个字符,除了换行符。

(2)\d表示数字,等价于[0-9]。

(3)\D表示非数字,等价于[^0-9]。

(4)\w表示字符,包括数字、字母和下划线,等价于[a-zA-Z0-9_]。

(5)\W表示非字符,等价于[^a-zA-Z0-9_]。

(6)\s表示空白字符,包括空格、制表符、换行符等。

(7)\S表示非空白字符。

2. 匹配重复字符:(1)*表示重复0次或更多次。

(2)+表示重复1次或更多次。

(3)?表示重复0次或1次。

(4){n}表示重复n次。

(5){n,}表示重复n次或更多次。

(6){n,m}表示重复n到m次。

3. 匹配位置:(1)^表示匹配开头位置。

(2)$表示匹配结尾位置。

(3)\b表示匹配单词边界。

(4)\B表示匹配非单词边界。

4. 匹配分组:(1)( )表示一个分组。

(2)\1、\2、\3等表示对之前的分组的引用。

(3)(?: )表示一个非捕获分组。

5. 匹配字符集:(1)[ ]表示一个字符集,例如[abc]表示匹配a、b、c中的任意一个字符。

(2)[^ ]表示一个否定字符集,例如[^abc]表示匹配除了a、b、c以外的任意一个字符。

(3)[a-z]表示一个范围,表示匹配a至z中的任意一个字母。

6. 匹配转义字符:(1)\表示转义字符,例如\\.表示匹配点号。

(2)\n表示匹配换行符。

(3)\r表示匹配回车符。

(4)\t表示匹配制表符。

(5)\xx表示匹配十六进制字符。

以上是一些常用的正则表达式公式,如果我们能够熟练掌握这些公式,就可以很好地应用正则表达式来处理字符串。

当然,对于不同编程语言来说,对于正则表达式的支持也会有所不同,所以需要我们在实际应用中注意区别。

常用正则式

常用正则式
60. (pattern) 匹配pattern 并获取这一匹配。
61.
62. (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
63.
64. (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
119.
120. 匹配双字节字符(包括汉字在内):[^x00-xff]
121.
122. 匹配空行的正则表达式:n[s| ]*r
123.
124. 匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/
125.
126. 匹配首尾空格的正则表达式:(^s*)|(s*$)
75.
76. [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
77.
78. \b 匹配一个单词边界,也就是指单词和空格间的位置。
79.
80. \B 匹配非单词边界。
81.
82. \cx 匹配由x指明的控制字符。
83.
36.
37. 元字符及其在正则表达式上下文中的行为:
38.
39. \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
40.
41. ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
91.
92. \r 匹配一个回车符。等价于 \x0d 和 \cM。

正则表达式

正则表达式

正则表达式(I)正则表达式是由英文词语regular expression翻译过来的,就是符合某种规则的表达式。

正则表达式在软件开发中应用非常广泛,例如,找出网页中的超链接,找出网页中的email 地址,找出网页中的手机号码,判断输入的内容是否全部是数字,是否满足某种日期格式等等。

可以将正则表达式理解为一种对文字进行模糊匹配的语言,它用一些特殊的符号(称为元字符)来代表具有某种特征的一组字符以及该组字符重复出现的次数。

例如,对于正则表达式“\d{5}(-\d{4})?”,\d就是一个元字符,它表示一个数字字,{5}表示紧靠它前面的元素项连续重复5次,\d和{5}的组合\d{5}就表示匹配任意连续的5个数字字符;-\d{4}匹配的是一个连字号(-)后加上4个任意的数字,(-\d{4})?表示连字号(-)和后面的4个数字可有可无。

对于整个正则表达式“\d{5}(-\d{4})?”,表示要么是5个连续的数字字符,要么是5个连续的数字后加上一个连字号(-)、再加上4个连续的数字组成的10个字符。

正则表达式中的圆括号除了能将多个元素组合成一个可统一操作的组合项外,它所括起来的表达式部分还成为了一个子匹配(也叫子表达式),也就是说,我们可以用圆括号在一个长的正则表达式中划分出子表达式。

这样,除了可以得到整个正则表达式的匹配结果外,还可以单独得到每个子表达式部分所匹配的结果。

要灵活运用正则表达式,必须了解其中各种元字符的功能。

元字符从功能上大致分为:限定符、选择匹配符、分组组合和反向引用符、特殊字符、字符匹配符、定位符。

限定符用于指定其前面的字符或组合项连续出现多少次,下面是各种限定符及其含义:●{n} 规定前面的元素或组合项的连续出现n 次●{n,} 规定前面的元素或组合项至少连续出现n 次●{n,m } 规定前面的元素或组合项至少连续出现n 次,至多连续出现m 次●+ 规定前面的元素或组合项必须出现一次或连续多次,等效于{1,}●* 规定前面的元素或组合项可以出现零次或连续多次,等效于{0,}●? 规定前面的元素或组合项出现零次或一次,等效于{0,1}默认情况下,正则表达式使用最长(也叫贪婪)匹配原则。

20个常用的正则表达式 单字母

20个常用的正则表达式 单字母

正则表达式(Regular Expression)是一种用于匹配字符串的强大工具。

它通过使用特定的符号和字符来描述和匹配一系列字符串,能够满足我们在处理文本时的各种需求。

在这篇文章中,我们将深入探讨20个常用的单字母正则表达式,并通过实例来展示它们的使用方法。

1. \b在正则表达式中,\b表示单词的边界。

它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。

2. \d\d表示任意一个数字字符。

它可以用来匹配任何数字,例如\d+可以匹配一个或多个数字字符。

3. \w\w表示任意一个字母、数字或下划线字符。

它可以用来匹配单词字符,例如\w+可以匹配一个或多个单词字符。

4. \s\s表示任意一个空白字符,包括空格、制表符、换行符等。

它可以用来匹配空白字符,例如\s+可以匹配一个或多个空白字符。

5. \.\.表示匹配任意一个字符,包括标点符号和空格等。

它可以用来匹配任意字符,例如\.可以匹配任意一个字符。

6. \A\A表示匹配字符串的开始。

它可以用来确保匹配发生在字符串的开头。

7. \Z\Z表示匹配字符串的结束。

它可以用来确保匹配发生在字符串的结尾。

8. \b\b表示单词的边界。

它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。

9. \D\D表示任意一个非数字字符。

它可以用来匹配任何非数字字符。

10. \W\W表示任意一个非单词字符。

它可以用来匹配任何非单词字符。

11. \S\S表示任意一个非空白字符。

它可以用来匹配任何非空白字符。

12. \[\[表示匹配方括号。

它可以用来匹配包含在方括号内的字符。

13. \]\]表示匹配方括号。

它可以用来匹配包含在方括号内的字符。

14. \(\(表示匹配左括号。

它可以用来匹配包含在左括号内的字符。

15. \)\)表示匹配右括号。

它可以用来匹配包含在右括号内的字符。

16. \{\{表示匹配左花括号。

它可以用来匹配包含在左花括号内的字符。

17. \}\}表示匹配右花括号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Python正则式的基本用法1.1基本规则1.2重复1.2.1最小匹配与精确匹配1.3前向界定与后向界定1.4组的基本知识2.re模块的基本函数2.1使用compile加速2.2 match和search2.3 finditer2.4 字符串的修改与替换3.更深入的了解re的组与对象3.1编译后的Pattern对象3.2 组与Match对象3.2.1组的名字与序号3.2.2 Match对象的方法4.更多的资料初学Python,对Python的文字处理能力有很深的印象,除了str对象自带的一些方法外,就是正则表达式这个强大的模块了。

但是对于初学者来说,要用好这个功能还是有点难度,我花了好长时间才摸出了点门道。

由于我记性不好,很容易就忘事,所以还是写下来比较好一些,同时也可以加深印象,整理思路。

由于我是初学,所以肯定会有些错误,还望高手不吝赐教,指出我的错误。

1 Python正则式的基本用法Python的正则表达式的模块是…re‟,它的基本语法规则就是指定一个字符序列,比如你要在一个字符串s=‟123abc456‟中查找字符串‟abc‟,只要这样写:>>> import re>>> s='123abc456eabc789'>>>re.findall(r‟abc‟,s)结果就是:['abc', 'abc']这里用到的函数”findall(rule , target [,flag] )”是个比较直观的函数,就是在目标字符串中查找符合规则的字符串。

第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在compile函数的说明中详细说明)。

返回结果结果是一个列表,中间存放的是符合规则的字符串。

如果没有符合规则的字符串被找到,就返回一个空列表。

为什么要用r’ ..‘字符串(raw字符串)?由于正则式的规则也是由一个字符串定义的,而在正则式中大量使用转义字符’/’,如果不用raw字符串,则在需要写一个’/’的地方,你必须得写成’//’,那么在要从目标字符串中匹配一个’/’的时候,你就得写上4个’/’成为’////’!这当然很麻烦,也不直观,所以一般都使用r’’来定义规则字符串。

当然,某些情况下,可能不用raw字符串比较好。

以上是个最简单的例子。

当然实际中这么简单的用法几乎没有意义。

为了实现复杂的规则查找,re规定了若干语法规则。

它们分为这么几类:功能字符:….‟ …*‟ …+‟ …|‟ …?‟ …^‟ …$‟ …/‟等,它们有特殊的功能含义。

特别是‟/‟字符,它是转义引导符号,跟在它后面的字符一般有特殊的含义。

规则分界符:…[… …]‟ …(‟ …)‟ …{… …}‟等,也就是几种括号了。

预定义转义字符集:“/d”“/w” “/s”等等,它们是以字符‟/‟开头,后面接一个特定字符的形式,用来指示一个预定义好的含义。

其它特殊功能字符:‟#‟ …!‟ …:‟ …-…等,它们只在特定的情况下表示特殊的含义,比如(?# …)就表示一个注释,里面的内容会被忽略。

下面来一个一个的说明这些规则的含义,不过说明的顺序并不是按照上面的顺序来的,而是我认为由浅入深,由基本到复杂的顺序来编排的。

同时为了直观,在说明的过程中尽量多举些例子以方便理解。

1.1 基本规则‘[‘‘]’字符集合设定符首先说明一下字符集合设定的方法。

由一对方括号括起来的字符,表明一个字符集合,能够匹配包含在其中的任意一个字符。

比如 [abc123],表明字符‟a‟ …b‟ …c‟ …1‟ …2‟ …3‟都符合它的要求。

可以被匹配。

在‟[… …]‟中还可以通过‟-…减号来指定一个字符集合的范围,比如可以用[a-zA-Z]来指定所以英文字母的大小写,因为英文字母是按照从小到大的顺序来排的。

你不可以把大小的顺序颠倒了,比如写成[z-a]就不对了。

如果在‟[… …]‟里面的开头写一个…^‟号,则表示取非,即在括号里的字符都不匹配。

如[^a-zA-Z]表明不匹配所有英文字母。

但是如果…^‟不在开头,则它就不再是表示取非,而表示其本身,如[a-z^A-Z]表明匹配所有的英文字母和字符‟^‟。

‘|’或规则将两个规则并列起来,以‘|’连接,表示只要满足其中之一就可以匹配。

比如[a-zA-Z]|[0-9] 表示满足数字或字母就可以匹配,这个规则等价于 [a-zA-Z0-9]注意:关于‟|‟要注意两点:第一,它在‟[… …]‟之中不再表示或,而表示他本身的字符。

如果要在‟[… …]‟外面表示一个‟|‟字符,必须用反斜杠引导,即‟/|‟ ;第二,它的有效范围是它两边的整条规则,比如‘dog|cat‟匹配的是‘dog‟和‟cat‟,而不是‟g‟和‟c‟。

如果想限定它的有效范围,必需使用一个无捕获组…(?: )‟包起来。

比如要匹配‘I have a dog‟或‟I have a cat‟,需要写成r‟I have a (?:dog|cat)‟,而不能写成r‟I have a dog|cat‟例>>> s = …I have a dog , I have a cat‟>>>re.findall( r‟I have a (?:dog|cat)‟ , s )['I have a dog', 'I have a cat'] #正如我们所要的下面再看看不用无捕获组会是什么后果:>>>re.findall( r‟I have a dog|cat‟ , s )['I have a dog', 'cat'] #它将‟I have a dog‟和‟cat‟当成两个规则了至于无捕获组的使用,后面将仔细说明。

这里先跳过。

‘.’匹配所有字符匹配除换行符‟/n‟外的所有字符。

如果使用了‟S‟选项,匹配包括‟/n‟的所有字符。

例:>>> s=‟123 /n456 /n789‟>>>findall(r….+‟,s)['123', '456', '789']>>>re.findall(r….+‟ , s , re.S)['123/n456/n789']‘^’和’$’匹配字符串开头和结尾注意‟^‟不能在‘[ ]’中,否则含意就发生变化,具体请看上面的‟[… …]‟说明。

在多行模式下,它们可以匹配每一行的行首和行尾。

具体请看后面compile函数说明的‟M‟选项部分‘/d’匹配数字这是一个以‟/‟开头的转义字符,‟/d‟表示匹配一个数字,即等价于[0-9]‘/D’匹配非数字这个是上面的反集,即匹配一个非数字的字符,等价于[^0-9]。

注意它们的大小写。

下面我们还将看到Python的正则规则中很多转义字符的大小写形式,代表互补的关系。

这样很好记。

‘/w’匹配字母和数字匹配所有的英文字母和数字,即等价于[a-zA-Z0-9]。

‘/W’匹配非英文字母和数字即‟/w‟的补集,等价于[^a-zA-Z0-9]。

‘/s’匹配间隔符即匹配空格符、制表符、回车符等表示分隔意义的字符,它等价于[ /t/r/n/f/v]。

(注意最前面有个空格)‘/S’匹配非间隔符即间隔符的补集,等价于[^ /t/r/n/f/v]‘/A’匹配字符串开头匹配字符串的开头。

它和‟^‟的区别是,‟/A‟只匹配整个字符串的开头,即使在‟M‟模式下,它也不会匹配其它行的行首。

‘/Z’匹配字符串结尾匹配字符串的结尾。

它和‟$‟的区别是,‟/Z‟只匹配整个字符串的结尾,即使在‟M‟模式下,它也不会匹配其它各行的行尾。

例:>>> s= '12 34/n56 78/n90'>>>re.findall( r'^/d+' , s , re.M ) #匹配位于行首的数字['12', '56', '90']>>>re.findall( r‟/A/d+‟, s , re.M ) #匹配位于字符串开头的数字['12']>>>re.findall( r'/d+$' , s , re.M ) #匹配位于行尾的数字['34', '78', '90']>>>re.findall( r‟/d+/Z‟ , s , re.M ) #匹配位于字符串尾的数字['90']‘/b’匹配单词边界它匹配一个单词的边界,比如空格等,不过它是一个‘0’长度字符,它匹配完的字符串不会包括那个分界的字符。

而如果用‟/s‟来匹配的话,则匹配出的字符串中会包含那个分界符。

例:>>> s = 'abcabcdebcbcd'>>>re.findall( r‟/bbc/b‟ , s ) #匹配一个单独的单词…bc‟,而当它是其它单词的一部分的时候不匹配['bc'] #只找到了那个单独的‟bc‟>>>re.findall( r‟/sbc/s‟ , s )#匹配一个单独的单词…bc‟[' bc '] #只找到那个单独的‟bc‟,不过注意前后有两个空格,可能有点看不清楚‘/B’匹配非边界和‟/b‟相反,它只匹配非边界的字符。

它同样是个0长度字符。

接上例:>>>re.findall( r‟/Bbc/w+‟ , s ) #匹配包含‟bc‟但不以‟bc‟为开头的单词['bcde'] #成功匹配了‟abcde‟中的‟bcde‟,而没有匹配‟bcd‟‘(?:)’无捕获组当你要将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时,你需要将这部分规则用‟(?:‟ …)‟把它包围起来,而不能仅仅只用一对括号,那样将得到绝对出人意料的结果。

例:匹配字符串中重复的‟ab‟>>> s=‟ababababbabbaabaab‟>>>re.findall( r‟/b(?:ab)+/b‟ , s )['ababab']如果仅使用一对括号,看看会是什么结果:>>>re.findall( r‟/b(ab)+/b‟ , s )['ab']这是因为如果只使用一对括号,那么这就成为了一个组(group)。

相关文档
最新文档