'''
正则表达式(regex、regexp或RE)
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串
re模块
'''
'''
\f 匹配一个换页符。
\n 匹配一个换行符。
\r 匹配一个回车符。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^\f\n\r\t\v]。
\t 匹配一个制表符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
\W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结尾位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
. 匹配除换行符 \n 之外的任何单字符。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的
非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
[] 中括号表达式。
[xyz] 字符集合。匹配所包含的任意一个字符。
[^xyz] 非字符集合。匹配未包含的任意字符 。
[a-z] 字符范围。[^a-z]
{} 限定符表达式。
{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,最少匹配 n 次且最多匹配 m 次。
\ 将下一个字符标记为或特殊字符\n,\\
| 指明两项之间的一个选择,'z|food' 能匹配 "z" 或 "food"
正则表达式运算优先级
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
| 替换,"或"操作
'''
'''
模拟手机、身份证号、网址、邮箱
'''
import re
def mimePhone():
phonePattern = "1[3578]\d{9}"
resobj = re.match(phonePattern, "13912345678")
resobj = re.match(phonePattern, "14912345678")
resobj = re.match(phonePattern, "1399123456")
print(resobj)
def mimeID():
phonePattern = "[^0]\d{5}((19)|(20))\d{2}((0[1-9])|(1[0-2]))((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\d{3}[\dX]"
resobj = re.match(phonePattern, "123456789012345678")
resobj = re.match(phonePattern, "12345678901234567X")
resobj = re.match(phonePattern, "02345678901234567X")
resobj = re.match(phonePattern, "1234567890124567X")
resobj = re.match(phonePattern, "12345619991231678X")
print(resobj)
def mimeUrl():
phonePattern = "http(s?)://[^\^@~\*]*.[(com)|(cn)]$"
resobj = re.match(phonePattern, "http://abcd12345.com")
resobj = re.match(phonePattern, "http://[email protected]")
resobj = re.match(phonePattern, "http://abcd12345^.com")
resobj = re.match(phonePattern, "http://abcd12345~.com")
resobj = re.match(phonePattern, "http://abcd12345.cm")
print(resobj)
def mimeMailbox():
phonePattern = "^[a-zA-Z0-9][a-zA-Z0-9_]*@[a-zA-Z0-9_]*\.[a-zA-Z0-9_\.]*$"
resobj = re.match(phonePattern, "[email protected]")
resobj = re.match(phonePattern, "[email protected]")
resobj = re.match(phonePattern, "12345678@qqcom")
resobj = re.match(phonePattern, "12345你妹[email protected]")
print(resobj)
if __name__ == "__main__":
print("main over")