额,很厉害的一个表达式。要是有错误的地方,留个言,以便修改,如需转载,附带网址谢谢啦。By Mercury_Lc
正则表达式有很多的功能,比较常见的使用可以解决以下几种问题:
- 查找字符串 str 是否包含一些子串 s 或者进行模式查找
- 匹配符合要求的字符串,这里指可以是只要某种类型的,比如只要数字等
- 替换,可以把字符串 str 中的子串 s 替换成 字符串 t
- 分割,和匹配差不多的作用,不过是按某种要求来把原来的字符串 str 分割成多个字符串,可以存放到其他数据类型中
功能介绍及实现:
(用正则表达式,别忘记了 import re 因为它需要这个模块来支持她。)
1. re.match
功能:从字符串 str 的起始位置开始匹配 s 是否是 str 的前缀,如果不是的就返回 none , 否则返回一串东西(称为对象),需要转换才可以得到我们想要的。
格式: re.match(str, s, flags = 0) 「关于 flag 以后再说啦 这里的正则表达式为 浅谈 」
例如:str = "Hello Mercury_Lc" ,来看一下前缀是不是 Hello,这样子就可以直接用 re.match( ) 了。
# 注释一下:没有pycharm,QAQ,这里的空格纯属是为了好看些。
代码语言:javascript复制>>> import re //需要导入这个模块
>>> str = "Hello Mercury_Lc"
>>> re.match("Hello",str) // 单纯查到的
<_sre.SRE_Match object at 0x7f69299c5098>
>>> re.match("Hello",str).span() // 转换成始末索引 span( )
(0, 5)
>>> re.match("Mercury_Lc", str) // 这里因为没有找到,所以就没有输出了
>>> print(re.match("Mercury_Lc", str)) //输出一下,就是 None
None
>>> re.match("Hello", str).group() // 返回我们找的这个前缀,用到 group( )
'Hello'
>>> re.match("Hello", str).group(1) // 加个参数,就可以返回多个啦(前提是有)
Traceback (most recent call last): // 因为我们查找的就一个,所以就报错了
File "<stdin>", line 1, in <module>
IndexError: no such group
2. re.search
功能:从字符串 str 全部的内容来匹配有没有符合字符串 s 的,如果有的话返回和 re.match( ) 是一样的操作,不过就是范围变大了,限制少了。
代码语言:javascript复制格式: re.search( str , s , flags = 0 )
>>> str = "Hello Mercury_Lc"
>>> re.search("Mercury",str).span() //从全部的字符串内容来匹配
(6, 13)
3. re.sub
功能:替换,把字符串 str 中的 s 替换成 t ,如果当前这个串里面有多个 s ,你也可以指定替换的次数。
代码语言:javascript复制格式:re.sub( s , t , str , count = 0) // count 默认是零,可以不写,表示全部替换
>>> str = "Hi Mercury,I love you" //原字符串
>>> str = re.sub("Mercury","chy",str,1) 把 Mercury 换成 chy,替换一次
>>> str
'Hi chy,I love you'
>>> str = "Hi Mercury,I love you"
>>> str = re.sub("Mercury","chy",str) //不写,默认全部
>>> str
'Hi chy,I love you'
4. compile 函数
功能:来编译一下你需要的匹配的模式串是什么样子的,这样后面用就方便了。(非官方解释Q_Q)
格式:re.compile( pattern [ , flags ] )
这里可选参数 [ , flags ] 可以规定一些东西,比如不区分大小写、多行匹配等。
5. re.findall
功能:字面意思,找到所有符合条件,直到遍历完所有的内容,返回的信息以列表的形式返回,如果没有找到,就返回空列表。
QWQ 没写完,明天或者后天再写了