首页 > 其他 > 详细

正则相关知识点

时间:2019-12-15 17:07:14      阅读:75      评论:0      收藏:0      [点我收藏+]

1.所有的元字符

    \d   表示匹配所有的数字
    \w   表示匹配数字,字母,下换线  
    \s   表示匹配所有的空白
    \t   表示匹配制表符tab
    \n   表示匹配换行符\n 回车键
    \D   表示匹配非数字
    \W   表示匹配非数字,字母,下换线
    \S   表示匹配非空白
    .    除\n以外所有的
    []   匹配字符组中的字符
    [^]  匹配除字符组中字符的所有字符
    ^    匹配字符串的开始
    $    匹配字符串的结尾
    () 匹配括号内的表达式,也表示一个组
    a|b  匹配字符或者字符b

2.量词

    ?    重复零次或者一次
    +     重复一次或更多次
    *     重复零次或者多次
    {n}   重复n次
    {n,}  重复n次或更多次
    {n,m} 重复n次或m次

3.贪婪匹配与非贪婪匹配

# 贪婪匹配
  - 在量词范围允许的情况下,尽量多的匹配内容
  - . *x  表示匹配任意字符,任意次数,遇到最后一个x才停下来
# 非贪婪匹配
  - . *?x  表示匹配任意字符,任意多次数,但是一旦遇到x就停下来

4.转义符

  - 原本有特殊意义的字符,为了表达它本身的意义的时候,需要转义
  - 有一些有特殊 意义的内容,放在字符组中,会取消它的特殊意义
  - [().*+?] 所有的内容在字符组中会取消它的特殊意义
  [a-c] -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面\最后面

5.re模块常用的方法  

  - fildall (正则,待匹配字符串flag):返回所有匹配项的

import re
ret = re.findall("d+","19740ash93010uru") 
# 返回所有满足匹配条件的结果,放在列表里
print(ret)        
# [‘19740‘, ‘93010‘]

  - search:返回一个变量,通过group取到的是一个匹配的项

ret = re.search(\d+,19740ash93010uru)   
if ret:
    print(ret.group())
# 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
# 19740

  - finditer :返回一个迭代器,通过迭代器取到的是一个变量,通过group取值(节省空间)

代码待续

  - macth:从头开始找第一个,其他和search一样

import re 
ret = re.match(a, abc).group()  # 同search,不过尽在字符串开始处进行匹配
print(ret)
# ‘a‘

      
# 用户输入的内容匹配的时候,需要用户输入11位数手机号码,^手机号码$
match("手机号正则$","123eva456taibai")
search("^手机号正则$","123eva456taibai")

  - compile(正则):同一个正则表达式需要多次使用的时候提前编译来节省时间

代码待续

  - split:通过正则表达式匹配的内容进行分割

import re
ret = re.split("\d+","eva3egon4yuan")
print(ret)
# [‘eva‘, ‘egon‘, ‘yuan‘]
      
ret = re.split("(\d+)",,"eva3egon4yuan")
print(ret)
# [‘eva‘, ‘3‘, ‘egon‘, ‘4‘, ‘yuan‘

  在匹配部分加上()之后所切出的结果是不同的,没有 () 的没有保留所匹配的项,但是有 () 的却能够保留了匹配的项,这个在某些需要保留匹配部分的使用过程是非常重要的。

  - sub:替换,通过正则表达式匹配的内容进行替换

import re
ret = re.sub("\d+","H","aas123dfghj147")
print(ret)
# aasHdfghjH
      
ret = re.sub("\d+","H",,"aas123dfghj147",1)    # 替换一个
print(ret)
# "aasHdfghj147

  - subn      替换,在sub的基础上,返回一个元组,第一个内容是替换结果,第二个是替换次数

import re
ret = re.subs("\d+","H",alex123wusir456)
print(ret)
# (‘alexHwusirH‘, 2)

正则相关知识点

原文:https://www.cnblogs.com/zangyue/p/12044575.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!