正则模块

正则模块:

一正则介绍:

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

对字符串的匹配

.python中使用正则:

import re

.正则的语法;

1.十一个元字符:

    . ^ $ * + ? { } [ ] | ( )

.

表示一个, 匹配除换行符以外的任意字符

^

匹配字符串的开始

$

匹配字符串的结束

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{}

{n}    重复n

{n,}    重复n次或更多次

{n,m}    重复nm

[]

注意: 在字符集里有功能的符号: - ^

Eg: In [343]: re.findall("[*()]","he*()llo world")

Out[343]: ['*', '(', ')']

[aeiou]匹配的aeiou中任意字符

[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

|

示或的关系

()

分组

转义

2.什么是贪婪模式:

正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.

非贪婪模式: 就是匹配到结果就好,就少的匹配字符

eg:

贪婪模式

In [340]: re.search("hell.*","hello world").group()

Out[340]: 'hello world'

非贪婪模式

In [341]: re.search("hell.*?","hello world").group()

Out[341]: 'hell'

3. 元字符之转义符

d 匹配任何十进制数;它相当于类 [0-9]

D 匹配任何非数字字符;它相当于类 [^0-9]

s 匹配任何空白字符;它相当于类 [ fv]

S 匹配任何非空白字符;它相当于类 [^ fv]

w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]

W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]

 匹配一个特殊字符边界,比如空格 &,#等

 

4.有一个坑:

 

图片出自: http://www.cnblogs.com/yuanchenqi/articles/5732581.html

 

5.一点点补充:

给分组命名

In [357]: re.search("(?P<name>tw+)","my name is tom").group()

Out[357]: 'tom

原文地址:https://www.cnblogs.com/twotigers/p/7762862.html