[]   用来暗示一个字符串集合,

1.在这个集合中:字符串可以被 独特列出,例如[amk]将会匹配'a','m'或者'k'。

2.字符串的范围可以被暗示通过给两个字符串和分开它们用一个'-';例如[a-z]将会匹配任何小写ASCLL字幕,[0-5][0-9]将会匹配所有的两个数字从00到59,而[0-9A-Fa-f]将会匹配任何十六进制数值。如果 - 是转义(例如[a\-z])或者它是被放置在第一个或者最后字符(例如[a-]),那么它会匹配一个序列'-'  即a  -  z随意匹配一个

3.特别的字符失去它们特别的意思在这个集合。例如,[(+*)] 将会匹配任何序列字符'(',  '+',  '*' ,  或者 ')'

4.字符串类比如\w或者\s(在下面定义)也尝试在一个集合,虽然这个字符串他们匹配依赖于是否LOCALE或者UNICODE模式有效

5.字符串不再范围内的可能匹配通过补足集合。如果集合的第一个字符是'^',那么所有的字符串不再这个集合的将会匹配,例如,[^5]将会匹配任何字符除了'5',而[^^]将会匹配任何字符除了'^',^没有特殊的意思如果他不是这个集合的第一个字符。

6.为了在一个集合中匹配字符序列']'  ,先于它可能是一个反斜杠,或者放置它在集合的开始。例如,[()[\]{}]和[]()[{}]将会都匹配一个父元素

'|'  A|B,在A和B任意的RE,创造一个正则表达式将会匹配A或者B。一个武断的数字正则表达式用'|'来分开用这种方式。这可能在一个组(下面)使用。当目标字符串扫描时,RE分开用'|'尝试着从左边到右边。当一个模式完全匹配,那么主干接受。这意味着一旦A匹配,B将不会再测试了。即使它可能会有一个更长的全部的匹配。换句话话,'|'操作符从来不是贪婪地。为了匹配序列'|',使用\|或者在有一个字符串类中闭合它,比如[|]

(…)   匹配无论正则表达式是在圆括号内,暗示着一个小组的开始和结束;小组的内容是会被处理在一个已经被执行的匹配后面,而且会匹配在字符串用\number字符串序列,描述如下。为了匹配序列'(' 或者 ')',用\( 或者 \),或者闭合它们用一个字符串类:  [(][)]

(?...)  这是一个延长标记(一个'a'跟随着一个'('否则不是一个有意义的)。第一个字符串在'?'决定意义是什么和更远的语法属于这个构造函数。延长通常不会创建一个新的小组;(?P<name>…)是这个规则的意外。跟随是精准地支持扩展。

(?iLmsux)  (一个或者更多的字符从集合'I','L','m','s','u','x')。这个组匹配整个空的字符串;字母集合跟标记一直:re.I(忽视大小写),re.L(场所依赖),re.M(多行),re.S(不要匹配全部),re.U(Unicoid 依赖),和re.X(繁杂的).对于整个正则表达式。(这个标记描述在module文本).这是有用的如果你希望可以包括标签作为正则表达式的一部分,代替过掉一个标记争吵用re.compile()函数

注意(?x)标记改变表达式的解析,它应该是首先在表达式字符串中有用的,或者在一个或者更多白空的字符串之后。如果这里是非空白字符串在一个标记后,那么结果是未定义。

(?:…)   一个非捕获的版本正则表达式括号。匹配无论正则表达式。但是自序列匹配用一个小组不能被处理在一个执行匹配或者参考之后在一个模式中

(?P<name>…)  相似和正则括号,但是字序列匹配用一个小组是可用通过象征性符号小组名 name。组名必须是有效的python标识符,并且每个小组名字必须是定义仅仅一次用一个正则表达式。一个象征符号小组也是一个数字的小组,仅仅好像小组没有命名。

命名小组 可以被引用在三个文本中,如果模式是(?P<quote>[’"]).*?(?P=quote) 这会匹配一个字符引用用单个或两个引用

(?P=name)  一个回溯引用给一个命名的小组;它匹配无论文本是匹配被之前小组命名过

(?#...)   一个评论,括号里面的文本可以简单地忽略

(?=…)   匹配如果… 匹配下一个,但是不消费任何字符。这是被叫做前瞻断言。例如,Isaac(?=Asimov)将会匹配'Isaac'仅仅如果后面跟随的是'Asimov'

(?!...) 匹配如果…不匹配下面。这是一个消极的前瞻断言。例如,Isaac(?!Asimov)将会匹配'Isaac'仅仅只有那不是跟随被'Asimov'

(?<=...)

Matches if the current position in the string is preceded by a match for ... that ends at the current position. This is called a positive lookbehind assertion. (?<=abc)def will find a match in abcdef, since the lookbehind will back up 3 characters and check if the contained pattern matches. The contained pattern must only match strings of some fixed length, meaning that abc or a|b are allowed, but a* and a{3,4} are not. Group references are not supported even if they match strings of some fixed length. Note that patterns which start with positive lookbehind assertions will not match at the beginning of the string being searched; you will most likely want to use the search() function rather than the match() function:

>>> import re
>>> m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
'def'

This example looks for a word following a hyphen:

这个例子寻找一个词跟随在一个连字符-之后

>>> m = re.search('(?<=-)\w+', 'spam-egg')
>>> m.group(0)
'egg'

(?<=…)   匹配如果目前的位置在字符串中是先验被一个匹配为了…  那么结束在目前的位置。这是叫做一个积极的回顾性断言。(?<=abc)定义将会发现一个匹配在abcdef,自从这个回顾性将会支持3个字符串并且检查是否包含了模式匹配。包含的模式必须仅仅匹配一些修复长度的字符串,意味着abc或者a|b是被允许,但是a*和a{3,4}是没有。组参考是不支持,甚至它们匹配字符串对于一些修复的长度。注意模式货开始积极地前瞻性断言将不会匹配在字符串被搜索的开头;你将会尽可能地想要去用search()函数而不是match()函数:

(?<!...)

Matches if the current position in the string is not preceded by a match for .... This is called a negative lookbehind assertion. Similar to positive lookbehind assertions, the contained pattern must only match strings of some fixed length and shouldn’t contain group references. Patterns which start with negative lookbehind assertions may match at the beginning of the string being searched.

(?<!...)   匹配如果目前的位置在字符串中是没有先验被一个匹配为了…,这是叫作一种消极的回顾性断言。相似的积极性回顾性断言,这包含了模式必须仅仅匹配字符串对于一些修复的长度和不应该包含组参考。模式会开始用消极的回顾可能会匹配在字符串被搜索的开头。

(?(id/name)yes-pattern|no-pattern)

Will try to match with yes-pattern if the group with given id or name exists, and with no-pattern if it doesn’t. no-pattern is optional and can be omitted. For example, (<)?(\w+@\w+(?:\.\w+)+)(?(1)>) is a poor email matching pattern, which will match with '<user@host.com>' as well as 'user@host.com', but not with '<user@host.com'.

(?(id/name)yes-pattern|no-pattern)  尝试去匹配yes模式如果组是被给了id或者名字存在,而且no-pattern如果它不会。no-pattern是乐观的而且可能被忽略。例如,(<)?(\w+@\w+(?:\.\w+)+)(?(1)>)是可怜的email匹配模式,这将匹配'<user@host.com>'   和'user@host.com', 但不是 '<user@host.com'.

在新的版本2.4中,

特定的序列包含了'\'和一个字符来自一个被给的列表。如果这种普通的字符是不在列表中,那么产生RE将会匹配第二种字符.例如,\$匹配字符'$'

\number   匹配属于同样数字中的小组内容。小组是数字从1开始。例如,(.+)\1匹配'the the' 或者'55 55',但不是'thethe'(注意小组之后的空白).这指代序列能仅仅用于去匹配一个99小组。如果第一个数字是0,或者数字是八进制的3,那么将不会解释作为一个小组匹配,但是作为一个字符带有八进制数值的。在'['和']'属于一个字符串类,所有的数字忽略被处理作为字符。

\A   匹配仅仅在字符串的开始。

\b  匹配空的字符串,但是仅仅在单词的开头或者结尾。一个单词是被定义作为一个字母数字序列或者数字下划线字符。注意正常地,\b是定义作为a \w和 a \W  字符的边界(或者反之亦然),或者在\w和字符串的开始/结束,所以这个字符串的精准的集合被认为是字母数字取决于UNICODE和LOCALE标记的值。例如,r'\bfoo\b'匹配'foo','foo.','(foo)','bar foo bar'但不是'foobar'或者'foo3'。在一个字符串范围内,\b代表这回车字符,为了python字符序列的兼容性。

\B  匹配空的字符串,但是仅仅当它不是在单词的开头或者结尾。这意味着r'py\B'匹配'python','py3','py2'但不是'py','py.',或者'py!'   \B是仅仅相反的跟\b,所以它也是一个LOCALE和UNICODE的主题设定。

\d  当这个UNICODE标记是没有指定时,匹配任何十进制数字;这是等价的对于集合[0-9]。伴随UNICODE,它将匹配任何是被指代为十进制数字在Unicode字符的属性数据库中。

\D  跟上面这个想反

\s   当这个UNICODE标记不是指定的时候,它匹配任何空白字符,这是等价的对于集合[\t\n\r\f\v].这种LOCALE标记没有额外的影响在匹配空白。如果UNICODE是一个集合,这将匹配字符集[\t\n\r\f\v] 无论分类在Unicoide字符中被作为空白的。

\S 跟上面这个相反

\w  当LOCALE和UNICODE标记是没有指定时,匹配任何字母数字字符和下划线,这是等价的对于集合[a-z A-Z 0-9].伴随LOCALE,它将匹配集合[0-9_]加上无论任何字符被定义成字母数字的。如果UNICODE是一个集合,这将匹配字符[0-9]加上无论什么被定义成字母数字的在Unicode字符属性数据库中。

\W跟上面相反

\Z  匹配仅仅在字符的末尾。如果都是LOCALE和UNICODE标记是被包含在特殊的序列中,LOCALE标记首先发挥作用比UNICODE。大部分标准的省略支持用python字符序列是也被接受正则表达式解析、

\a   \b   \f  \n

\n   \t  \v   \x

\\

注意\b是用来表示单词边界的,意味着回车仅仅在字符串类中。

八进制省略是被包括在限制性的形势中:如果第一个数字是一个0,那么试过这里有三个八进制数字,它是被考虑成一个八进制逃跑。否则,它是一个组引用。作为一个字符串序列,八进制转义总是最多三位长度。

python中关于正则表达式四的更多相关文章

  1. python模块 re模块与python中运用正则表达式的特点 模块知识详解

    1.re模块和基础方法 2.在python中使用正则表达式的特点和问题 3.使用正则表达式的技巧 4.简单爬虫例子 一.re模块 模块引入; import re 相关知识: 1.查找: (1)find ...

  2. Python学习-37.Python中的正则表达式

    作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...

  3. [Python]网络爬虫(七):Python中的正则表达式教程

    转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...

  4. [Python]网络爬虫(七):Python中的正则表达式教程(转)

    接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...

  5. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  6. 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类

    在Python使用正则表达式需要使用re(regular exprssion)模块,使用正则表达式的难点就在于如何写好p=re.compile(r' 正则表达式')的内容. 下面是在Python中使用 ...

  7. Python学习-38.Python中的正则表达式(二)

    在Python中,正则表达式还有较其他编程语言有特色的地方.那就是支持松散正则表达式了. 在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了.而松散正则表达式就是解决这一问题的办法. 用上一 ...

  8. 在python中使用正则表达式(转载)

    https://www.cnblogs.com/hanmk/p/9143514.html 在python中使用正则表达式(一)   在python中通过内置的re库来使用正则表达式,它提供了所有正则表 ...

  9. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

随机推荐

  1. Android开发视频学习(1)

    S01E02_搭建Android开发环境 设置ANDROID_SDK_HOME环境变量,用于指定Android模拟器的目录,官方文档没有说要设置. S01E03_Android创世纪 Android根 ...

  2. android中如何实现离线缓存

    离线缓存就是在网络畅通的情况下将从服务器收到的数据保存到本地,当网络断开之后直接读取本地文件中的数据. 将网络数据保存到本地: 你可以自己写一个保存数据成本地文件的方法,保存在android系统的任意 ...

  3. Eclipse 卸载插件

    直奔主题,不罗嗦! 1.help 2.about eclipse 3. 点击Installation Details 4.选中你安装的插件点击Uninstall... 5.从新启动,OK.

  4. 【HTML】Beginner2:page title

    1 page title </head>    contains information about the page </title> the title of the do ...

  5. mysql 5.5 中的示例数据库 employees

    http://dev.mysql.com/doc/employee/en/employees-installation.html

  6. 【Java基础】成员变量和局部变量的区别

    在类中的位置不同 成员变量:在类内部方法外部 局部变量:在方法体内部定义的或者方法的参数中定义的在内存中的位置不同 成员变量:在堆内存,有初始化值,byte,short,int,long->0, ...

  7. ZOJ3228 - Searching the String(AC自动机)

    题目大意 给定一个文本串,接下来有n个模式串,每次查询模式串出现的次数,查询分两种,可重叠和不可重叠 题解 第一次是把AC自动机构造好,跑n次,统计出每个模式串出现的次数,交上去果断TLE...后来想 ...

  8. 小波变换和motion信号处理(三)(转)

    这篇文章算太监了,去作者blog提问去吧:http://www.kunli.info/2012/04/08/fourier-wavelet-motion-signal-3/ 从前两篇发布到现在,过去一 ...

  9. SSDT – Error SQL70001 This statement is not recognized in this context-摘自网络

    March 28, 2013 — arcanecode One of the most common errors I get asked about when using SQL Server Da ...

  10. fcntl记录锁实例

    fcntl 函数是一个相当常用的对文件进行加锁操作的函数. 文件锁包括强制锁.建议锁.记录锁, 不过一般系统和内核都是用的强制锁. 以下为记录锁的例子:------------------------ ...