正则表达式

 

# 正则表达式
# 默认是贪婪匹配
# 量词后加?成为惰性匹配
'''
import re
while 1:
    ph_num = input('please input ur phone number:  ')
    if re.match('^(13|14|15|16|17|18)[0-9]{9}$', ph_num):
        print('ur phone number is: ', ph_num)
        break
    else:
        print('wrong input, try again')
'''

'''
[0123456789]    可以匹配中括号中的某一单个字符
[0-9]   可以匹配0123456789
[a-z]   可以匹配任意小写字母
[A-Z]   可以匹配任意大写字母
[A-z]   匹配大小写字母及中间的ascii码其他字符
[0-9a-zA-Z] 多个字符范围并列写

元字符:
.   匹配除了换行符以外的任意字符
\w  匹配字母数字下划线
\s  匹配任意空白符(tab space)
\d  匹配数字
\W  匹配非字母数字下划线
\S  匹配非空白符
\D  匹配非数字
[\w\W]  匹配所有
\n  匹配一个换行符
\t  匹配一个制表符(tab)
\b  匹配一个单词的结尾(取另外一个条件且在单词结尾的字符)

^   以什么开头,相当于startswith
$   以什么结尾,相当于endswith
^ $中间的内容为匹配规则

a|b 匹配a或者b
()  是一个分组
[..]    匹配[]内的某一个字符
[^ab]   匹配除了[]内字符的所有字符

量词————用在匹配条件后面
*       重复匹配0次或多次
+       重复匹配1次或多次
?       重复匹配0次或1次
{n}     重复n次
{n,}    重复n次或更多次
{n,m}   重复n到m次

'''

'''
绿茶白茶黄茶清茶红茶黑茶
.茶
(.茶)+
'''

'''
海燕海娇海东
海.
^海.$
'''

'''
李杰和李莲英和李二棍子
李[^和]+
李[杰莲英二棍子]*
'''

'''
字符集+量词+?或没? ?惰性,没?默认贪婪
'''

'''
身份证号码是15或18个字符的字符串
如果15位则全部由数字组成
首尾不能为0
如果是18位,则前17位全部是数字,末尾可能是数字或x
[1-9]\d{13,16}[0-9x]
[1-9]\d{14}(\d{2}[0-9x])?
[1-9]\d{16}[0-9x]|[1-9]\d{14}   或运算,要先长的后短的,否则前面短的会被直接匹配
'''

'''
转义符
\\d     ===>\d
\\n     ===>\n
在python中
r'\\n'  ====>\n
r'\\d'  ====>\d
'''

'''
<script>...<script>
<.*>
<.*?>

'''

'''
.*?x
取任意字符 0至无限长度 尽可能少重复
就是去前面任意长度的字符,知道出现x
'''

 

posted @ 2020-04-04 12:14  vivagoal  阅读(76)  评论(0)    收藏  举报