首页 > 代码库 > 正则表达式,re 和collect
正则表达式,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(‘不是合法的手机号码‘)
.在正则里表示的是所有的除了换行符外任意字符,.只表示一个字符。
\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)
正则表达式,re 和collect