1.迭代器:对象在其内部实现了iter(),__iter__()方法,可以用next方法实现自我遍历。

二.python正则表达式

1.python通过re模块支持正则表达式

2.查看当前系统有哪些python模块:help('modules')

help():交互式模式,支持两种方式调用(交互式模式调用,函数方式调用)

例:交互式调用

>>> help()

Welcome to Python 3.5's help utility!

If this is your first time using Python, you should definitely check out

the tutorial on the Internet at http://docs.python.org/3.5/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing

Python programs and using Python modules.  To quit this help utility and

return to the interpreter, just type "quit".

To get a list of available modules, keywords, symbols, or topics, type

"modules", "keywords", "symbols", or "topics".  Each module also comes

with a one-line summary of what it does; to list the modules whose name

or summary contain a given string such as "spam", type "modules spam".

help> modules

函数式调用

help('modules')

3.正则表达式的元字符

\s  :空白符;
\S  :非空白符;
[\s\S]  :任意字符;
[\s\S]*  :0个到多个任意字符;
[\s\S]*?   : 0个字符,匹配任何字符前的位置;

\d:数字;

\B:非数字 ;

\w:匹配单词 单词等价于:[a-zA-Z0-9_];

\W:匹配非单词;

规则:

.  匹配任意单个字符;

*  匹配前一个字符0次或多次;

+  匹配前一个字符1次或多次;

?  匹配前一个字符0次或一次;

{m}    匹配前一个字符m次;

{m,n} 匹配前一个字符 m - n 次;

{m,}   匹配前一外字符至少 m次 至多无限次;

{,n}  匹配前一个字符 0 到 n次;

\  转义字符;

[...]  字符集 例:[a-z];

.*? *? +? ??  {}?    使* + 等 变成非贪婪模式

边界匹配(不消耗待匹配的待匹配字符串的字符)

^:匹配字符串开头,在多行模式中匹配每一行的行首;

$:匹配字符串结尾,在多行模式中匹配每一行的行尾;

\b:匹配单词边界,不匹配任何字符,\b匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非字符、字符串的开始或结束位置,\b是零宽度的。(“单词”是由\w所定义的单词子串) \b相当于:(?<!\w)(?=\w)|(?<=\w)(?!\w);

\B:[^\b];

\A:仅匹配字符串开头;

\Z:仅匹配字符串结尾;

分组:

|  或,左右表达式任意匹配一个,它先尝试匹配 | 左边的表达式,如果匹配成功则跳过匹配右边的表达式;如果 | 没有被包括在()中,则它在范围是整个正则表达式。

()  分组 ;从表达式左边开始,第遇到一个分组,编号加1;分组表达式作为一个整体,后面可接数量词;分组表达式中的 | 仅在该分组中有效。   例:(abc){3}  (abc|def)123  (abc|def){3}123

\number  引用编号为 number 的分组匹配到的字符串。 例:(\d)([a-z])\1\2

环视(lookhead)

(?=) :顺序肯定环视

(?!) :顺序否定环视

(?<=) :逆序肯定环视

(?<!) :逆序否定环视

4.调用re的内置方法完成正则表达式分析

5.match(匹配)对象:

match(pattern, string, flags=0)

Try to apply the pattern at the start of the string, returning

a match object, or None if no match was found.

m = re.match('a','abc')

所有:

m.end        m.group      m.lastgroup  m.re         m.start

m.endpos     m.groupdict  m.lastindex  m.regs       m.string

m.expand     m.groups     m.pos        m.span

group([group1, …]): 

获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。

groups([default]):

以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。

m.pos (pos:postion):返回从哪个位置开始搜索

m.endpos:返回从哪个位置结束搜索

m.start():返回指定pattern在作匹配时所截获的子串在原串的起始位置

m.end():返回指定pattern在作匹配时所截获的子串在原串的结束位置

6.search:执行正则表达式搜索并且在搜索结束后返回所匹配到的串,只返回第一次匹配到的结果

search(pattern, string, flags=0)

Scan through string looking for a match to the pattern, returning

a match object, or None if no match was found.

m.group()

m.groups()

7.findall :匹配所有的对象,返回一个列表

findall(pattern, string, flags=0)

Return a list of all non-overlapping matches in the string.

If one or more capturing groups are present in the pattern, return

a list of groups; this will be a list of tuples if the pattern

has more than one group.

Empty matches are included in the result.

直接打印结果

8.finditer(用的不多)

finditer(pattern, string, flags=0)

Return an iterator(迭代器) over all non-overlapping matches in the

string.  For each match, the iterator returns a match object.

Empty matches are included in the result.

9.split

split(pattern, string, maxsplit=0, flags=0)

Split the source string by the occurrences of the pattern,

returning a list containing the resulting substrings.  If

capturing parentheses are used in pattern, then the text of all

groups in the pattern are also returned as part of the resulting

list.  If maxsplit is nonzero, at most maxsplit splits occur,

and the remainder of the string is returned as the final element

of the list.

例:a = re.split('\.','www.baidu.com')

直接打印结果

10.sub:实现查找替换

sub(pattern, repl, string, count=0, flags=0)

Return the string obtained by replacing the leftmost

non-overlapping occurrences of the pattern in string by the

replacement repl.  repl can be either a string or a callable;

if a string, backslash escapes in it are processed.  If it is

a callable, it's passed the match object and must return

a replacement string to be used.

例:In [47]: re.sub('baidu','BAIDU','www.baidu.com')

Out[47]: 'www.BAIDU.com'

11.subn :查找替换,并显示替换的次数

例:

In [48]: re.subn('baidu','BAIDU','www.baidu.com')

Out[48]: ('www.BAIDU.com', 1)

flags:

re.I或IGNORECASE:忽略字符大小写

re.M或MULTILINE:多行匹配

re.A或ASCII:仅执行8位的ASCII码字符匹配

re.U或UNICODE:使用\w,\W

re.S (DOTALL): "." matches any character at all, including the newline.  使 . 可以匹配 \n 符。

re.X (VERBOSE): Ignore whitespace and comments for nicer looking RE's. 允许在正则表达式规则中加入注释,但默认会去掉所有空格。

12.去除优先捕获:

xxx(?:)xxx

?:  :分组时去除优先捕获

?P<>   :

(?P<name>...)

Similar to regular parentheses, but the substring matched by the group is accessible via the symbolic group name name. Group names must be valid Python identifiers, and each group name must be defined only once within a regular expression. A symbolic group is also a numbered group, just as if the group were not named.

Named groups can be referenced in three contexts. If the pattern is (?P<quote>['"]).*?(?P=quote) (i.e. matching a string quoted with either single or double quotes):

Context of reference to group “quote” Ways to reference it

in the same pattern itself

(?P=quote) (as shown)

\1

when processing match object m

m.group('quote')

m.end('quote') (etc.)

in a string passed to the repl argument of re.sub()

\g<quote>

\g<1>

\1

python re 模块和基础正则表达式的更多相关文章

  1. python 3.x 爬虫基础---正则表达式

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  2. Python 常用模块之re 正则表达式的使用

    re模块用来使用正则表达式.正则表达式用来对字符串进行搜索的工作.我们最应该掌握正则表达式的查询,更改,删除的功能.特别是做爬虫的时候,re模块就显得格外重要. 1.查询 import re a = ...

  3. Python re模块前的正则表达式常用语法小总结

    一.正则表达式: (1).正则表达式是干什么的  正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或 ...

  4. python re模块常用的正则表达式

    '.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r&qu ...

  5. python 3.x 爬虫基础---Requersts,BeautifulSoup4(bs4)

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  6. Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

  7. python基础——正则表达式

    正则表达式 正则表达式为高级的文本模式匹配.抽取.与/或文本形式的搜索和替换功能提供了基础.简单的说,正则表达式是一些由字符和特殊符号组成的字符串,他们描述了模式的重复或者表述多个字符,于是正则表达式 ...

  8. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  9. python基础===正则表达式(转)

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

随机推荐

  1. iOS项目groups和folder的区别(组和文件夹)

    在引用一个第三方框架的时候,已经拖进去了,但是引用框架里面的文件时,竟然报错说找不到.......查了一下,原来在拖进去时没有注意group和folder的选择! 其实仔细观察一下,不难发现,以gro ...

  2. js---OOP浅谈

    对象化编程-------简单地去理解就是把javascript能涉及到的范围分成各种对象,对象下面再次划分对象.编程出发点多是对象,或者说基于对象.所说的对象既包含变量,网页,窗口等等 对象的含义   ...

  3. 【代码笔记】iOS-水波效果

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...

  4. Android 刷新相册

    Android4.4之前: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" + f ...

  5. iOS 字典与JSON相互转换

    iOS 字典与JSON相互转换 首先简单说一下为什么会写这种幼稚的文章. 现在的网络请求几乎都是AFN完成的,AFN也为我们写了了JSON转换字典的方法,但是不要忘记后台是一个很爱用JSON的人群,H ...

  6. 请问utf-8的中文是一个汉字占三个字节长度吗?

    这是个好问题,可以当作一个笔试题.先从字符编码讲起. 1.美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0: 2.后来欧洲人发现尼 ...

  7. EditText的inputType常用取值

    最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...

  8. Perl 脚本报Can't locate Mail/Sender.pm 解决办法

        在新的Linux Server(Red Hat Enterprise Linux Server release 5.7 (Tikanga))上配置磁盘空间告警的perl脚本后,测试时报如下错误 ...

  9. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理2

    首先我们来写个类进行获取当前线程内唯一的DbContext using System; using System.Collections.Generic; using System.Data.Enti ...

  10. Terminate Instance 操作详解 - 每天5分钟玩转 OpenStack(33)

    本节通过日志详细分析 Nova Terminate 操作. Terminate 操作就是删除 instance,下面是 terminate instance 的流程图 向 nova-api 发送请求 ...