正则表达式,re 和collect

各种括号在正则里的用法:

()包裹一段字符串,外面用一个功能符号包含。

{}里面加一个数字,表示运行多少次,如果{1,3}则表示运行1-3次。

[],里面加数字,表示从哪到哪,例:【1,9】表示从1到9.

^表示首字母,$表示尾字母。

|表示,或。

以下例子:

import re
phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
        print('是合法的手机号码')
else:
        print('不是合法的手机号码')
View Code

.在正则里表示的是所有的除了换行符外任意字符,.只表示一个字符。

\w匹配字母或数字或下划线

\s匹配任意的空白符

\d匹配数字

\n匹配一个换行符

\t匹配一个制表符

\b表示一个单词的结尾

^匹配字符串的开头,

$匹配字符串的结尾

\W表示的是非字符串非字母非下划线的所有字符,和\w是2个完全相反一面,\W和\w可以表示所有的字符串,也就是任意字符串。

\D匹配非数字,

\S匹配非空白符

a|b匹配字符a或字符b

(^....)匹配除了字符组中字符的所有字符。

--------------------------------------------------------------------------------------

量词:

*表示的是重复零次或很多次

+表示的是重复1次或很多次

?表示重复0次货一次

{n}重复n次

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

{n,m}重复n-m次

----------------------------------------------

李[杰联营二棍子]*      待匹配字符(李杰和李联营和李二棍子)  匹配结果:李杰,李联营,李二棍子

表示:李字后面【】里所含有字符的任意次数,因为【】里没有和所有‘和’字有关的都没有匹配。

李【^和】*:表示的是李后面可以跟着不是‘和’字的所有字符。

[\d]     456fsdf123  出来的是不同行的4,5,6,1,2,3,

[\d]+    456dsfds3  出来的是4,5,6在一行 3独立在另外一行。

 

 

 

.*?p前面取任意长度字符,直到p。

 

 

 

re模块下的常用方法:

re.findall-----找到字符串中所有的a,并显现出来

import re 

ret=re.findall('a','asdasd asdasd')

print(ret)

===>'a''a''a''a'

re.search--------找到字符串中的第一个S并显现出来,还要用加上。group才会显示

ret=re.search('s','sdads,sdads')

print(ret.group())

===>s

re.match---------------------------表示字符串中首字母是否匹配,如果是一样哪就显示,如果不是就会显示出错。当然还是要用group显示。

ret=re.match('a','asd')

print(ret.group())====》a

-------------------------------------------

 

re.split-----------这里需要注意首先切分的地方,‘ad’和‘[ad]’切出来的结果
是不一样的,‘ab’的话是ab连在一起的切,而【ab】是指凡是有ab就切。
import re
ret=re.split('[ad]','sadasd')
print(ret)

 

 

posted @ 2017-08-07 19:01  forjie  阅读(226)  评论(0编辑  收藏  举报