python 正则表达式

2023-03-09 18:43:45 浏览数 (1)

额,很厉害的一个表达式。要是有错误的地方,留个言,以便修改,如需转载,附带网址谢谢啦。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( ) 是一样的操作,不过就是范围变大了,限制少了。

格式: re.search( str , s , flags = 0 ) 

代码语言:javascript复制
>>> str = "Hello Mercury_Lc"  

>>> re.search("Mercury",str).span()  //从全部的字符串内容来匹配

(6, 13)

3. re.sub

功能:替换,把字符串 str 中的 s 替换成 t ,如果当前这个串里面有多个 s ,你也可以指定替换的次数。

格式:re.sub( s , t , str , count = 0)      // count 默认是零,可以不写,表示全部替换

代码语言:javascript复制
>>> 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 没写完,明天或者后天再写了

0 人点赞