python正则表达式

# 正则表达式

\d匹配一个数字

\w匹配一个字母或数字

\s匹配一个空格(包括tab等空白符)

\s+匹配至少一个空格

.匹配任意字符

*匹配任意个字符(包括0个)

+匹配至少一个字符

?匹配0个或者1个字符

{n}匹配n个字符

{n,m}匹配n-m个字符

A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。

^表示行的开头, ^\d表示必须以数字开头

$表示行的结束,\d$表示必须以数字结束

^py$整行只能匹配py

[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线

[0-9a-zA-Z\_]+

[a-zA-Z\_][0-9a-zA-Z\_]*

[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}

---

# re模块

1. ==match==()方法判断是否匹配,成功返回Match对象,失败返回None

re.match(pattern, string, flags)

第一个参数为正则表达式

第二个参数为要匹配的字符串

第三个参数为标志位,匹配方式(是否区分大小写,多行匹配等)

> import re

>  re.match(r'^\d{3}\-\d{3,8}$', '010-12345')

<_sre.SRE_Match object; span=(0, 9), match='010-12345'>

2. ==split==()正则表达式切分字符串

> re.split(r'\s+', 'a b  c')

['a', 'b', 'c']

> re.split(r'[\s\,]+', 'a,b, c  d')

['a', 'b', 'c', 'd']

> re.split(r'[\s\,\;]+', 'a,b;; c  d')

['a', 'b', 'c', 'd']

3. ==group==()分组提取

> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')

> m.group(0)

'010-12345'

>  m.group(1)

'010'

> m.group(2)

'12345'

> t = '19:05:30'

> m = re.match( r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)

> print(m)

> print(m.groups())

<_sre.SRE_Match object; span=(0, 8), match='19:05:30'>

('19', '05', '30')

4. 正则表达式默认贪婪匹配

贪婪匹配

> re.match(r'^(\d+)(0*)$', '102300').groups()

('102300', '')

非贪婪匹配(尽可能少匹配)加?

> re.match(r'^(\d+==?==)(0*)$', '102300').groups()

('1023', '00')

5. ==compile==()预编译,把正则表达式编译成一个正则表达式对象

> import re

\# 编译:

> re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')

\# 使用

> re_telephone.match('010-12345').groups()

('010', '12345')

> re_telephone.match('010-8086').groups()

('010', '8086')

6. ==findall==()获取字符串中所有匹配的字符串

获取字符串中包含'oo'的所有单词

> re.findall(r'\w*oo\w*', text)

7. ==sub==()

re.sub(pattern, repl, string, count)

第二个函数是替换后的字符串,本例为’-‘

第四个函数指替换个数,默认为0,表示每个匹配项都替换

> text = "JGood is a handsome boy, he is cool, clever, and so on..."

> print re.sub(r'\s+', '-', text)

将字符串中的空格替换成‘[]’

> re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0)

8. ==search==()

re.search(pattern, string, flags)

匹配直到找到第一个匹配然后返回,如果字符串没有匹配,则返回None

你可能感兴趣的:(python正则表达式)