正则表达式_应用

常用的正则表达式可以在线生成,不需要自己写;
正则表达式在线生成器:https://www.sojson.com/regex/generate

案例:
1.匹配URL地址
生成正则表达式:^ ((https|http|ftp|rtsp|mms)?: //)[^\s]+

分析:
^:
如果没有在[ ]里面的时候, 代表以什么开头;
如果在[ ]里面的时候,代表除了…之外;
(https|http|ftp|rtsp|mms):代表一个分组

代码:

import re

url = 'http://www.baidu.com'
pattern = r'^((https|http|ftp|rtsp|mms)?:\/\/)\S+'

# 进行分组的时候, findall方法只返回分组里面的内容;
# print(re.findall(pattern, url))

resObj = re.search(pattern, url)
if resObj:
    # group方法会返回匹配的所有内容;
    print(resObj.group())
    # groups方法返回分组里面的内容;
    print(resObj.groups())

运行结果:
在这里插入图片描述
2.匹配日期

生成正则表达式:\d{4}(-|/|.)\d{1,2}\1\d{1,2}

分析:其中 \1 代表的是一定要与第一个分组的内容保持一致, 否则不匹配
即 2019-1-3 能匹配到,而 2019-1.4 匹配不到

代码:

import re

date = '2019-2-15'
pattern = r'\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}'

reObj = re.search(pattern, date)
if reObj:
    print(reObj.group())
    print(reObj.groups())

运行结果:
在这里插入图片描述
3.匹配用户名
生成正则表达式:[\w-\u4e00-\u9fa5]+

分析:
字符串是否包含中文:[\u4e00-\u9fa5]
\u4e00是Unicode中汉字的开始,\u9fa5则是Unicode中汉字的结束;
[ ]表示匹配方括号的中任意字符;

代码:

import re
user = '西部开源123'
pattern = r'[\w\-\u4e00-\u9fa5]+'
print(re.findall(pattern, user))

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/King15229085063/article/details/87596578