正则表达式(模式匹配)

1.简介
正则表达式是在处理字符串是必须掌握的。
判断字符串是否符合某一模式


2.特殊字符
1)^$*?+{2}{2,}{2,5}|
2)[][^][a-z]
3)\s\S\w\W
4)[\u4E00-\u9FA5]()\d


【代码演示】
import re

line="heelllllleeooe123"
line1="13250936269"
line2="你好世界"
regex_str0 = "^h.*" #'^'以h开头,'.'后接任意字符,'*'任意多次变换
regex_str1 = ".*3$"#以3结尾的字符串
regex_str = ".*?(e.*?e).*"#‘?’从左边开始匹配匹配到第一个e,输出第一个e到第二个e的字符串
regex_str2 = ".*(e.*e).*"#从右边开始匹配'()'提取括号中的内容
regex_str3 = ".*(e.+e).*"#从右边开始匹配
regex_str4 = ".*(e.{1}e).*"#两个e之间出现字符数为1个的字符
regex_str5 = ".*(e.{1,2}e).*"#两个e之间出现字符数大于1次小于2次的字符
regex_str6 = "([hijk]eelll)"#[]内的字符满足任一条件就成立
regex_str7 = "(1[0-9]{10})"#在1之后的字符有满足0-9的任意10位数字
regex_str8 = "(1[^1]{10})"#在1之后的字符有满足不等于1的任意10位数字
regex_str9 = "([\u4E00-\u9FA5]+)"#[\u4E00-\u9FA5]满足任意汉字‘+’一个以上的字符都可以(中文,连续)
regex_str10 = ".*?(\d+)"#\d提取数字
match_obj = re.match(regex_str,line)#返回结果
match_obj1 = re.match(regex_str2,line)
match_obj2 = re.match(regex_str3,line)
match_obj3 = re.match(regex_str4,line)
match_obj4 = re.match(regex_str5,line)
match_obj5 = re.match(regex_str6,line)
match_obj6 = re.match(regex_str7,line1)
match_obj7 = re.match(regex_str8,line1)
match_obj8 = re.match(regex_str9,line2)
match_obj9 = re.match(regex_str10,line)
if re.match(regex_str0,line):#re判断是否匹配(match_obj是否有结果)
    print("以h开头")
if re.match(regex_str1,line):#re判断是否匹配
    print("以3结尾")
if match_obj:#非贪婪匹配,正向匹配
    print(match_obj.group(1))
if match_obj1:#贪婪匹配,反向匹配
    print(match_obj1.group(1))
if match_obj2:
    print(match_obj2.group(1))
if match_obj3:
    print(match_obj3.group(1))
if match_obj4:
    print(match_obj4.group(1))
if match_obj5:
    print(match_obj5.group(1))
if match_obj6:
    print(match_obj6.group(1))
if match_obj7:
    print(match_obj7.group(1))
if match_obj8:
    print(match_obj8.group(1))
if match_obj9:
    print(match_obj9.group(1))


【输出结果】
以h开头
以3结尾
ee
eooe
eooe
eooe
heelll
13250936269
13250936269
你好世界
123


2.python示例

python出生年月提取示例
【代码示例】
import re

line = "张伟出生于1996年2月1日"
line = "张伟出生于1996-2-1"
line = "张伟出生于1996-02-01"
line = "张伟出生于1996-02"
line = "张伟出生于1996年2月"

regex_str = ".*出生于(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}|[月/-]\d{1,2}[日]|[月/-]$|$))"
match_obj =re.match(regex_str,line)

if match_obj:
    print(match_obj.group(1))

常用正则表达式

(来源于https://blog.csdn.net/Angelahhj



阅读更多
版权声明:版权归作者个人所有,未经本人授权,只能用于学习、交流、研究。 https://blog.csdn.net/qq_31847191/article/details/79958892
个人分类: python
上一篇Python 爬虫基础知识
下一篇深度优先和广度优先
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭