美文网首页
Python 正则表达式小结

Python 正则表达式小结

作者: 马本不想再等了 | 来源:发表于2019-02-24 09:50 被阅读0次

1. 特殊字符

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

2. 示例

^ $ . * 示例

import re


line = "maben123123"
# 以m开头,.中间任意字符,*任意多个,以3结尾
regex_str = "^m.*3$"
match_obj = re.match(regex_str, line )
if match_obj:
    print('yes')
>>> yes

贪婪模式 示例

import re


line = "mabenbb123123"
# 这里默认是贪婪模式,从后端开始匹配,先找到第一个b,.*代表任意字符任意长度,再到第二个b,这样就导致直接匹配出两个b
regex_str = ".*(b.*b).*"
match_obj = re.match(regex_str, line )
if match_obj:
    print(match_obj.group(1))
>>> bb

? 与 贪婪模式 示例

import re


line = "mabenbbasdbb123123"
''' 
?代表正向,且只取第一个(非贪婪),先找到第一个b,.*代表任意字符任意长度,再到第二个b,这样就直接匹配出benb。
这里,第一个?起到正向匹配的作用,第二个?起到只取一个(非贪婪)的作用,如没有第二个?会输出benbbasdbb
'''
regex_str = ".*?(b.*?b).*"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> benb

+ 示例

import re


line = "mabenbbasdbb123123"
# +代表中间至少出现一次,这样bb就不符合要求了,故会出现basdbb
regex_str = ".*(b.+b).*"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> basdbb

{1} 示例

import re


line = "mabenbbbasdbb123123"
# {1}代表必须出现一次,故只有bbb符合
regex_str = ".*(b.{1}b).*"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> bbb

{2,} 示例

import re


line = "mabenbbbasdbb123123"
# {2, }代表至少出现两次,故只有basdbb符合,从后往前匹配。
regex_str = ".*(b.{2,}b).*"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> basdbb

{2,3} 示例 注:{2, 3}是错误的写法,,后不能有空格

import re


line = "mabenbbbasdbb123123"
# {2,3}至少出现2次,至多出现3次,从后端开始匹配,故basdb
regex_str = ".*(b.{2,3}b).*"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> basdb

| 以及 group 示例

import re


line = "mabben123123"
# | 代表或的意思,但是如果两个别打是同时满足,会默认匹配第一个
regex_str = ".*((maben|mabben)123).*"
match_obj = re.match(regex_str, line)
if match_obj:
    # group()中数字0或空代表提取全部内容,1代表提取括号中的内容,2代表提取两层括号中的内容
    print(match_obj.group(0))
    print(match_obj.group(1))
    print(match_obj.group(2))

[ ] 示例

import re


line = "15902992018"
# []中的意思是满足其中任意一个
regex_str = "(1[35789][0-9][^1]{9})"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> 15902992018

总结[ ]的用法 :
[0-9] 代表一个区间内的所有字符
[45786] 代表中括号中的所有字符
[^1]{9} 代表接下来的9位中不能有1
[.] 代表 .号 本身

部分常用表达式:
\s 匹配任意空白字符,等价于 [\t\n\r\f].
\S 匹配任意非空字符
\w 匹配字母数字及下划线,等价于 [0-9_a-zA-Z]
\W 匹配非字母数字及下划线
\d 匹配任意数字,等价于 [0-9].
\D 匹配任意非数字

[\u4E00-\u9FA5] 示例1

import re


line = "你好s"
# [\u4E00-\u9FA5]是unicode编码中的汉字范围,只提取汉字,+代表多个。
regex_str = "([\u4E00-\u9FA5]+)"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> 你好

[\u4E00-\u9FA5] 示例2 从英文中提取中文

import re


line = "studay in 北京大学"
# [\u4E00-\u9FA5]是unicode编码中的汉字范围,只提取汉字,+代表多个。
regex_str = ".*?([\u4E00-\u9FA5]+大学)"
match_obj = re.match(regex_str, line)
if match_obj:
    print(match_obj.group(1))
>>> 北京大学

相关文章

  • 正则表达式

    Python正则表达式初识(一) Python正则表达式初识(二) Python正则表达式初识(三) Python...

  • 正则表达式

    Python:正则表达式Python:正则表达式

  • Python正则表达式指南

    Python正则表达式指南 本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式在程序编码中的应用

    正则表达式在程序编码中的应用 正则表达式(括号)、[中括号]、{大括号}的区别小结 正则表达式的() [] {}有...

  • [转]python正则表达式(一) 函数使用

    原文:python | 史上最全的正则表达式 更全的正则表达式处理函数:在python中使用正则表达式(一) 0....

  • Python正则表达式

    python正则表达式

  • Python正则表达式用法详解

    搞懂Python 正则表达式用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一...

  • Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例...

网友评论

      本文标题:Python 正则表达式小结

      本文链接:https://www.haomeiwen.com/subject/wgjvyqtx.html