正则表达式模块

Posted ihitao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式模块相关的知识,希望对你有一定的参考价值。

import re

# 元字符:. ^ $ * + ? { } [ ] | ( ) 
# 通配符 . 只能代指任意一个字符,除了换行符

# ^ 只以开始来匹配

# $ 只以结尾来匹配

# * 重复匹配[0,正无穷]

# + 重复匹配[1,正无穷]

# ?  取0次或1次

# {} 自定义范围贪婪匹配 {1,3} , {1,}:代表正无穷

# * 等价于 {0,正无穷}
# + 等价于 {1,正无穷}
# ? 等价于 {0,1}


# [] 1、字符集 [c,d] c 与 d  是或的关系,取其一进行匹配
#    2、[a-z] 匹配a到z的字母范围
#    3、取消元字符的特殊功能(\^-这三个符号例外), [w,*] * 在这里面代表普通字符
#    4、[^i]: ^放在[]里是取反,取不是i 的内容,[^4,5]:4和5是一组,取不是4、不是5 的内容

# \ 1、反斜杠后面跟元字符,去除特殊功能
#   2、反斜杠后面跟普通字符,实现特殊功能(
    # \d  匹配任何十进制数;它相当于类 [0-9]。
    # \D 匹配任何非数字字符;它相当于类 [^0-9]。
    # \s  匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
    # \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
    # \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
    # \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
    # \b  匹配一个特殊字符边界,比如空格 ,&,#等。   r‘I\b‘ 匹配I
# )

# () 分组
# | 或的意思



# ret = re.findall(‘w\w{2}l‘,‘hello world‘)
# print(ret) # [‘worl‘]

# ret = re.findall(‘w..l‘,‘hello world‘)
# print(ret)  # [‘worl‘]
#
# ret = re.findall(‘^h...o‘,‘hheeeodokjdhowhello‘)
# print(ret)  # [] ^ 只以开始来匹配,后面的不再匹配

# ret = re.findall(‘a..x$‘,‘alexaoixaiuooiu‘)
# print(ret) # [] $ 只以结尾来匹配

# ret = re.findall(‘a*‘,‘kjibaaaaaaa‘)
# print(ret) # [‘‘, ‘‘, ‘‘, ‘‘, ‘aaaaaaa‘, ‘‘]

# ret = re.findall(‘ba+‘,‘kjibaaaaaaa‘)
# print(ret) # [‘aaaaaaa‘] 匹配加号前面所有的字符

# ret = re.findall(‘b+a‘,‘kjibadfbafs‘)
# print(ret) # [‘ba‘, ‘ba‘]

# ret = re.findall(‘b?a‘,‘kjibadfbfdafs‘)
# print(ret) # [‘ba‘, ‘a‘]

# ret = re.findall(‘a{2}b‘,‘aaab‘)
# print(ret) # [‘aab‘]

# ret = re.findall(‘a{1,3}b‘,‘aaaacab‘)
# print(ret) # [‘ab‘]

# ret = re.findall(‘a[c,d,e,]x‘,‘adx‘)
# print(ret) # [‘adx‘]

# ret = re.findall(‘[a-z]‘,‘adx‘)
# print(ret) # [‘a‘, ‘d‘, ‘x‘]

# ret = re.findall(‘[w,*]‘,‘awbsd*d‘)
# print(ret)  # [‘w‘, ‘*‘]

# ret = re.findall(‘[^i]‘,‘siuJO2‘)
# print(ret) # [‘s‘, ‘u‘, ‘J‘, ‘O‘, ‘2‘]


# ret = re.findall(‘\d{2}‘,‘sdjio2303829fjiejowijef‘)
# print(ret) # [‘23‘, ‘03‘, ‘82‘]

# ret = re.findall(‘\D‘,‘sd230jf‘)
# print(ret) # [‘s‘, ‘d‘, ‘j‘, ‘f‘]

# ret = re.findall(‘\s‘,‘dfs dfwdsad dsdd‘)
# print(ret) # [‘ ‘, ‘ ‘]

# ret = re.findall(‘\S‘,‘dfs d dd‘)
# print(ret) # [‘d‘, ‘f‘, ‘s‘, ‘d‘, ‘d‘, ‘d‘]

# ret = re.findall(‘\w‘,‘d23fs d dd‘)
# print(ret) # [‘d‘, ‘2‘, ‘3‘, ‘f‘, ‘s‘, ‘d‘, ‘d‘, ‘d‘]
#
# ret = re.findall(‘\W‘,‘d23\nfs d\t dd‘)
# print(ret) # [‘\n‘, ‘ ‘, ‘\t‘, ‘ ‘]


# ret = re.findall(r‘I\b‘,‘Hello,I am a LI&ST‘)
# print(ret) # [‘I‘, ‘I‘]


# ret = re.findall(r‘\bI‘,‘Hello Iam a LI&ST‘)
# print(ret) # [‘I‘]

# ret = re.search(‘sb‘,‘fdjsksblkjiohsb‘)  # search 匹配出第一个满足条件的结果
# print(ret) # <_sre.SRE_Match object; span=(5, 7), match=‘sb‘>
# print(ret.group()) # sb

# print(re.search(‘sb‘,‘fdjsksblkjiohsb‘).group()) # sb ,效果同上

# print(re.search(‘a\.‘,‘a.ghj‘).group())  #  匹配不到时,group 会报错,  结果为:a.

# print(re.search(‘\\\\g‘,‘a\ghj‘).group())  #  匹配反斜杠 \g

# print(re.search(r‘\\g‘,‘a\ghj‘).group())  #  匹配反斜杠 \g


# ret = re.findall(‘(as)+‘,‘fjiaslijaskj‘)
# print(ret)  #[‘as‘, ‘as‘]

# ret = re.findall(‘(as)+‘,‘fjiaslijaskj‘)
# print(ret)  #[‘as‘, ‘as‘]
#
# print(re.search(‘(as)+‘,‘fjiaslijaskj‘).group()) # as

# print(re.search(‘(as)|3‘,‘as3‘).group())  # as, 取as 或 3 



以上是关于正则表达式模块的主要内容,如果未能解决你的问题,请参考以下文章

通过 Java 正则表达式提取 semver 版本字符串的片段

俗话:学好正则表达式,走遍天下都没事!最详细的正则入门教程!

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式

第43天python学习re模块学习

python基础学习(十三)